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

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

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

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

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

Существует ли возможность реализовать графику в консольных приложениях С++ с использованием стандартных библиотек. (без создния собственных библиотек, классов и прочее)?
Например, чтобы для изображения линии использовалось что-то вроде line(x1,x2,y1,y2)
P,S. среда Visual Studio или Code Blocks.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 09:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Графика в консоли (C++):

Графика в консоли - C++
Помогите разобраться с графикой в консоле. компилирую код в Dev C++ #include <iostream> #include <windows.h> int main(){ ...

Графика в консоли - C++
Здравствуйте, подскажите пожалуйста, можно ли в консоли с++ устроить графический интерфейс небольшой, например, расстоновка знаков в...

Построение графика функции в консоли - C++
Привет всем Задание такое - построить график функции |y| = |sin(x)| + cos(x) Вся сложность заключается в том что график должен быть...

Постройка графика по точкам в консоли Dev C++ - C++
Задание стоит так - разработка класса "Построение интерполяционного полинома" с использованием разных видов конструкторов. Я написал...

Клавиши F1-F12 в консоли, и работа с мышкой в консоли - C++
Я искал на сайте, но не нашел упоминания о том как обрабатывать и или узнавать где находится курсор мышки (и еще мне надо бы узнать нажатие...

считывание с консоли ( не с клавы, а именно с консоли) - C++
нужно написать функцию которая возвращает string в котором написано 500 символов которые были выведены в консоли от начала. среда :...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
skynet120
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 76
01.09.2013, 15:27 #16
можно ли где почитать про это все

интересует:
1) какие параметры за что отвечают
2) можно ли менять толщину линии
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
01.09.2013, 15:31 #17
Цитата Сообщение от skynet120 Посмотреть сообщение
можно ли где почитать про это все
MSDN, книги и статьи по WinAPI

Добавлено через 1 минуту
Цитата Сообщение от skynet120 Посмотреть сообщение
какие параметры за что отвечают
Смотря параметры чего.
Цитата Сообщение от skynet120 Посмотреть сообщение
как нарисовать горизонтальную линию
координаты поменять
Цитата Сообщение от skynet120 Посмотреть сообщение
можно ли менять толщину линии
создать перо с нужной толщиной
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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 где описываться тот код что Вы привели
dmitry94
560 / 190 / 35
Регистрация: 25.05.2012
Сообщений: 796
01.09.2013, 18:27 #20
Цитата Сообщение от go Посмотреть сообщение
v.a.l.i.d, В обработчике событий добавить в WM_PAINT перерисовку.
Для консоли этого сделать не получится.
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
01.09.2013, 18:28 #21
Цитата Сообщение от skynet120 Посмотреть сообщение
можете кинуть ссылку на страницу MSDN где описываться тот код что Вы привели
GetConsoleWindow function
GetDC function
GetStockObject function
SelectObject function
MoveToEx function
LineTo function
ReleaseDC function

Цитата Сообщение от skynet120 Посмотреть сообщение
можете подсказать как это сделать
CreatePen function
DeleteObject function
dmitry94
560 / 190 / 35
Регистрация: 25.05.2012
Сообщений: 796
01.09.2013, 19:12 #22
Цитата Сообщение от dmitry94 Посмотреть сообщение
Для консоли этого сделать не получится.
Заинтересовал этот вопрос. WM_PAINT обработать можно, правда придется извратится с созданием доп. окна и уже в нем обрабатывать сообщения. Вот что получилось:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <windows.h>
 
LRESULT CALLBACK CallbackProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
HDC hDC;
HWND hConsoleWnd;
 
int main()
{
    HWND hMainWnd=NULL;
    WNDCLASS WndClass = {0};
    wchar_t szClassName[]=L"WC_TEST";
 
    WndClass.style         = CS_VREDRAW | CS_HREDRAW;
    WndClass.lpfnWndProc   = CallbackProc;
    WndClass.cbClsExtra    = 0;
    WndClass.cbWndExtra    = 0;
    WndClass.hInstance     = NULL;
    WndClass.hIcon         = LoadIcon( NULL, IDI_APPLICATION);
    WndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    WndClass.hbrBackground = CreateSolidBrush(RGB(0,0,0));
    WndClass.lpszClassName = szClassName;
 
 
    RegisterClass(&WndClass);
    
    hConsoleWnd=GetConsoleWindow();
 
    hMainWnd = CreateWindowW(szClassName,L"Test",WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE,0, 0, 0, 0, hConsoleWnd, NULL, NULL, NULL);
 
    hDC=GetDC(hConsoleWnd);
    SelectObject(hDC,GetStockObject(WHITE_PEN));
 
    MSG msg = {0};
    
    while (GetMessage(&msg,hMainWnd,0,0) != 0)
    {        
        TranslateMessage( &msg );   
         DispatchMessage( &msg );
         Sleep(5);
    }
 
    ReleaseDC(hConsoleWnd,hDC);
    return 0;
}
 
 
LRESULT CALLBACK CallbackProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 
    switch (message)
    {
 
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        case WM_PAINT:
            MoveToEx(hDC,50,50,NULL);
            LineTo(hDC,100,200);
            break;
        case WM_SIZE:
            RECT r;
            GetWindowRect(hConsoleWnd,&r);
            SetWindowPos(hWnd,NULL,0, 0, r.right-r.left, r.bottom-r.top, 0);
            SetFocus(hConsoleWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
    }
 
    return 0;
}
vigord
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 16
03.01.2016, 08:57 #23
Как очистить окно консоли от графика?
vigord
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 16
04.01.2016, 10:12 #24
Решил следующим образом:

C++
1
2
3
4
5
6
7
void erasegraph() {
    
    HWND hWnd = GetConsoleWindow(); 
    HDC hDC = GetDC(hWnd); 
    const RECT recta = {0, 320, 1000, 1000}; //Инизиализируем структуру типа const RECT координатами закрашиваемой области
    FillRect(hDC, &recta, (HBRUSH)GetStockObject(BLACK_BRUSH));//Черная кисть для закрашивания
}
scherbakovss201
16 / 1 / 0
Регистрация: 22.12.2015
Сообщений: 768
01.05.2016, 03:56 #25
Каким кодом нарисовать оси координат желтым цветом и подписать их ,если есть массив Х и У.Фон консоли синий.

Добавлено через 18 минут
чем заменить для консоли функцию outtextxy из тарого хедера graphics,h ?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.05.2016, 06:44 #26
Цитата Сообщение от vigord Посмотреть сообщение
Решил следующим образом:
при таких затратах, не проще ли уже оконное приложение создать?
и избавится от всех этих трудностей вызванных скрещением ужа с ежом?
scherbakovss201
16 / 1 / 0
Регистрация: 22.12.2015
Сообщений: 768
01.05.2016, 14:10 #27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
// Line.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <windows.h>
#include <iostream>
 
using namespace std;
 
//0 — черный
//1 — синий
//2 — зеленый
//3 — голубой
//4 — красный
//5 — лиловый
//6 — желтый
//7 — белый
//8 — серый
//9 — свело - синий
//A — светло - зеленый
//B — светло - голубой
//С — светло - красный
//E — светло - желтый
//F — ярко - белый
 
 
 
int main()
{
    
    system("color 1F");  // Установка синего  фона-1 и белого цвета шрифта F.
    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, 635, 320); //Рисуем линию из текущей точки в точку 100, 200
    Ellipse(hDC, 12, 23, 130, 120); //вот это элипс, он же окружность
    ReleaseDC(hWnd, hDC); //"Освобождаем" контекст
    system("pause");
    return 0;
}
Мне просто нужно что бы добавить сюда оси координат х и у,и черчечение графика по точка массива х и массива у
Wenebojo
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 1
21.07.2016, 23:32 #28
Фантастика!!!! СПС!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2016, 23:32
Привет! Вот еще темы с ответами:

Имитация консоли ? - C++
Форумчане, вечер добрый. В общем решил в одну конторку устроится. Получил тестовое. Но днём был занят и потому не имел возможности...

Кириллица в консоли - C++
Пишу простенькую программу: #include &lt;iostream&gt; using namespace std; int main() { cout &lt;&lt; &quot;Это моя первая C++ программа.&quot;; ...

Вывод в консоли - C++
//12.cpp #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; void starline(); ...

Атрибуты консоли в C++ - C++
С++ Win32 Console Application. Компилятор - Microsoft Visual Studio C++ 2005 Как при компилировании задать параметр для консоли,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.07.2016, 23:32
Ответ Создать тему
Опции темы

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