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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 120, средняя оценка - 4.88
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 241
#1

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

16.12.2012, 09:09. Просмотров 16123. Ответов 27
Метки нет (Все метки)

Существует ли возможность реализовать графику в консольных приложениях С++ с использованием стандартных библиотек. (без создния собственных библиотек, классов и прочее)?
Например, чтобы для изображения линии использовалось что-то вроде line(x1,x2,y1,y2)
P,S. среда Visual Studio или Code Blocks.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
16.12.2012, 09:53     Графика в консоли #2
В консоли вроде нельзя. В Qt SDK есть встроенная библиотека QPainter. Там и рисуй (только не в консоли)
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,510
Записей в блоге: 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
Сообщений: 241
16.12.2012, 11:11  [ТС]     Графика в консоли #4
Спасибо, Croessmah.
Правда, сложновато будет новичкам это втолкнуть в теме "создание рисунков циклическим повторением графических примитивов". Но попробую.
Не хочется ради этой одной темки Паскаль или Бейсик задействовать.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,510
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 11:26     Графика в консоли #5
Цитата Сообщение от LVV Посмотреть сообщение
"создание рисунков циклическим повторением графических примитивов"
покажите им квадрат или треугольник(ковер, салфетку) Серпинского.

Их можно достаточно ясно описать без использования программирования вовсе
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 241
16.12.2012, 11:32  [ТС]     Графика в консоли #6
Цитата Сообщение от Croessmah Посмотреть сообщение
можно достаточно ясно описать без использования программирования вовсе
Ну, смысл как раз в программировании и заключается. Циклы + графика: интересней для изучения, чем на одних вычислениях циклы "оттачивать"...
go
Эксперт C++
3584 / 1364 / 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++
3584 / 1364 / 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
1088 / 498 / 102
Регистрация: 02.08.2011
Сообщений: 2,479
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
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,510
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 20:10     Графика в консоли #12
Цитата Сообщение от daslex Посмотреть сообщение
Иногда нужно
Специально для Вас: MSDN. Изменение WINVER и _WIN32_WINNT
И если уж на то пошло, то _WIN32_WINNT_WIN2K, а не 0x0500
А лучше пишите тогда под DOS
daslex
1088 / 498 / 102
Регистрация: 02.08.2011
Сообщений: 2,479
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
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,510
Записей в блоге: 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
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,510
Записей в блоге: 2
Завершенные тесты: 1
01.09.2013, 15:31     Графика в консоли #17
Цитата Сообщение от skynet120 Посмотреть сообщение
можно ли где почитать про это все
MSDN, книги и статьи по WinAPI

Добавлено через 1 минуту
Цитата Сообщение от skynet120 Посмотреть сообщение
какие параметры за что отвечают
Смотря параметры чего.
Цитата Сообщение от skynet120 Посмотреть сообщение
как нарисовать горизонтальную линию
координаты поменять
Цитата Сообщение от skynet120 Посмотреть сообщение
можно ли менять толщину линии
создать перо с нужной толщиной
ValeryS
Модератор
6452 / 4918 / 451
Регистрация: 14.02.2011
Сообщений: 16,318
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++
C++ Постройка графика по точкам в консоли Dev 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     Графика в консоли
Ответ Создать тему
Опции темы

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