Форум программистов, компьютерный форум 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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 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
517 / 187 / 34
Регистрация: 25.05.2012
Сообщений: 780
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
Сообщений: 13
03.01.2016, 08:57     Графика в консоли #23
Как очистить окно консоли от графика?
vigord
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
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
-6 / 1 / 0
Регистрация: 22.12.2015
Сообщений: 471
01.05.2016, 03:56     Графика в консоли #25
Каким кодом нарисовать оси координат желтым цветом и подписать их ,если есть массив Х и У.Фон консоли синий.

Добавлено через 18 минут
чем заменить для консоли функцию outtextxy из тарого хедера graphics,h ?
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,054
01.05.2016, 06:44     Графика в консоли #26
Цитата Сообщение от vigord Посмотреть сообщение
Решил следующим образом:
при таких затратах, не проще ли уже оконное приложение создать?
и избавится от всех этих трудностей вызванных скрещением ужа с ежом?
scherbakovss201
-6 / 1 / 0
Регистрация: 22.12.2015
Сообщений: 471
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;
}
Мне просто нужно что бы добавить сюда оси координат х и у,и черчечение графика по точка массива х и массива у
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2016, 23:32     Графика в консоли
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Wenebojo
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 1
21.07.2016, 23:32     Графика в консоли #28
Фантастика!!!! СПС!
Yandex
Объявления
21.07.2016, 23:32     Графика в консоли
Ответ Создать тему
Опции темы

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