Форум программистов, компьютерный форум CyberForum.ru

Графика в консоли - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 120, средняя оценка - 4.88
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
16.12.2012, 09:09     Графика в консоли #1
Существует ли возможность реализовать графику в консольных приложениях С++ с использованием стандартных библиотек. (без создния собственных библиотек, классов и прочее)?
Например, чтобы для изображения линии использовалось что-то вроде line(x1,x2,y1,y2)
P,S. среда Visual Studio или Code Blocks.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
16.12.2012, 09:53     Графика в консоли #2
В консоли вроде нельзя. В Qt SDK есть встроенная библиотека QPainter. Там и рисуй (только не в консоли)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 10:27     Графика в консоли #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <windows.h>
int main(){
    POINT op;
    HWND hWnd=GetConsoleWindow();
    HDC hDC=GetDC(hWnd);
    SelectObject(hDC,GetStockObject(WHITE_PEN));
 
    MoveToEx(hDC,50,50,&op);
    LineTo(hDC,100,200);
 
    ReleaseDC(hWnd,hDC);
    std::cin.get();
    return 0;
}
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
16.12.2012, 11:11  [ТС]     Графика в консоли #4
Спасибо, Croessmah.
Правда, сложновато будет новичкам это втолкнуть в теме "создание рисунков циклическим повторением графических примитивов". Но попробую.
Не хочется ради этой одной темки Паскаль или Бейсик задействовать.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 11:26     Графика в консоли #5
Цитата Сообщение от LVV Посмотреть сообщение
"создание рисунков циклическим повторением графических примитивов"
покажите им квадрат или треугольник(ковер, салфетку) Серпинского.

Их можно достаточно ясно описать без использования программирования вовсе
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
16.12.2012, 11:32  [ТС]     Графика в консоли #6
Цитата Сообщение от Croessmah Посмотреть сообщение
можно достаточно ясно описать без использования программирования вовсе
Ну, смысл как раз в программировании и заключается. Циклы + графика: интересней для изучения, чем на одних вычислениях циклы "оттачивать"...
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.12.2012, 12:39     Графика в консоли #7
LVV, я бы OpenGL юзал.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.12.2012, 12:54     Графика в консоли #8
Croessmah, А можно сделать так чтобы линия не пропадала когда консоль сворачиваешь? Чтобы перерисовка была
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.12.2012, 13:13     Графика в консоли #9
v.a.l.i.d, В обработчике событий добавить в WM_PAINT перерисовку.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.12.2012, 14:23     Графика в консоли #10
Цитата Сообщение от go Посмотреть сообщение
В обработчике событий добавить в WM_PAINT перерисовку.
А как это сделать?
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
16.12.2012, 19:08     Графика в консоли #11
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
#include <iostream>
#include <windows.h>
Иногда нужно
C++
1
2
3
#define _WIN32_WINNT 0x0500 
#include <iostream>
#include <windows.h>
иначе может возникнуть ошибка error C3861: 'GetConsoleWindow': identifier not found
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 20:10     Графика в консоли #12
Цитата Сообщение от daslex Посмотреть сообщение
Иногда нужно
Специально для Вас: MSDN. Изменение WINVER и _WIN32_WINNT
И если уж на то пошло, то _WIN32_WINNT_WIN2K, а не 0x0500
А лучше пишите тогда под DOS
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
16.12.2012, 20:42     Графика в консоли #13
Цитата Сообщение от Croessmah Посмотреть сообщение
Специально для Вас

Не по теме:

ну не только для меня. будут люди, которые с этим столкнутся еще.

skynet120
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 76
01.09.2013, 15:14     Графика в консоли #14
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <windows.h>
int main(){
    POINT op;
    HWND hWnd=GetConsoleWindow();
    HDC hDC=GetDC(hWnd);
    SelectObject(hDC,GetStockObject(WHITE_PEN));
 
    MoveToEx(hDC,50,50,&op);
    LineTo(hDC,100,200);
 
    ReleaseDC(hWnd,hDC);
    std::cin.get();
    return 0;
}
кто может рассказать как оно работает, буду очень благодарен
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
01.09.2013, 15:18     Графика в консоли #15
Если просто
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <windows.h>
int main(){
    POINT op;
    HWND hWnd=GetConsoleWindow(); //Получаем дескриптор окна консоли
    HDC hDC=GetDC(hWnd); //Получаем контекст устройства по полученному дескриптору
    SelectObject(hDC,GetStockObject(WHITE_PEN)); //Выбираем перо WHITE_PEN в контекст
 
    MoveToEx(hDC,50,50,&op); //Ставим текущую точку в координаты 50,50
    LineTo(hDC,100,200); //Рисуем линию из текущей точки в точку 100, 200
 
    ReleaseDC(hWnd,hDC); //"Освобождаем" контекст
    std::cin.get();
    return 0;
}
skynet120
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 76
01.09.2013, 15:27     Графика в консоли #16
можно ли где почитать про это все

интересует:
1) какие параметры за что отвечают
2) можно ли менять толщину линии
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
01.09.2013, 15:31     Графика в консоли #17
Цитата Сообщение от skynet120 Посмотреть сообщение
можно ли где почитать про это все
MSDN, книги и статьи по WinAPI

Добавлено через 1 минуту
Цитата Сообщение от skynet120 Посмотреть сообщение
какие параметры за что отвечают
Смотря параметры чего.
Цитата Сообщение от skynet120 Посмотреть сообщение
как нарисовать горизонтальную линию
координаты поменять
Цитата Сообщение от skynet120 Посмотреть сообщение
можно ли менять толщину линии
создать перо с нужной толщиной
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
01.09.2013, 15:32     Графика в консоли #18
Цитата Сообщение от LVV Посмотреть сообщение
Существует ли возможность реализовать графику в консольных приложениях С++
в общих случаях нельзя
консоль ведь не только под Виндос бывает
а для Винды тебе показал Croessmah,
но это немножко обманка
там консоль воспринимается не как консоль а как окно консоли
о чем говорят строчки
Цитата Сообщение от Croessmah Посмотреть сообщение
#include <windows.h>
........
* * HWND hWnd=GetConsoleWindow(); //Получаем дескриптор окна консоли
* * HDC hDC=GetDC(hWnd); //Получаем контекст устройства по полученному дескриптору
и если развернуть на весь экран ctrl+Enter то не во всех виндах работать будет
skynet120
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 76
01.09.2013, 16:11     Графика в консоли #19
Цитата Сообщение от Croessmah Посмотреть сообщение
создать перо с нужной толщиной
можете подсказать как это сделать

Цитата Сообщение от Croessmah Посмотреть сообщение
MSDN, книги и статьи по WinAPI
можете кинуть ссылку на страницу MSDN где описываться тот код что Вы привели
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2013, 18:27     Графика в консоли
Еще ссылки по теме:

C++ Меню на консоли
Графика в консоли C++
Ввод в консоли C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dmitry94
517 / 187 / 34
Регистрация: 25.05.2012
Сообщений: 780
01.09.2013, 18:27     Графика в консоли #20
Цитата Сообщение от go Посмотреть сообщение
v.a.l.i.d, В обработчике событий добавить в WM_PAINT перерисовку.
Для консоли этого сделать не получится.
Yandex
Объявления
01.09.2013, 18:27     Графика в консоли
Ответ Создать тему
Опции темы

Текущее время: 19:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru