Рисование в консоли Visual Studio c++
Учился писать код в паскале. По ходу учебы перешел на с++ и Visual Studio. В борланд паскале был удобный канвас в котором можно было рисовать фигуры/графики функций etc. есть ли в visual studio аналог?
Отслеживать
задан 29 ноя 2017 в 11:31
Андрей Лобанович Андрей Лобанович
129 1 1 золотой знак 1 1 серебряный знак 7 7 бронзовых знаков
Псевдографикой?
29 ноя 2017 в 11:33
неа, нужно качать дополнительные библиотеки из вне
29 ноя 2017 в 11:38
@user272591, что за библиотеки?
29 ноя 2017 в 11:49
@VladimirGamalyan да, почему нет.
29 ноя 2017 в 11:50
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
В Windows на окне можно рисовать средствами GDI, консольное окно не исключение. Естественно такое решение будет непереносимым. Пример:
#include #include #include int main() < HWND hwnd = GetConsoleWindow(); HDC hdc = GetDC(hwnd); int x = 0; for (float i = 0; i < 3.14 * 10; i += 0.05) < SetPixel(hdc, x, 50 + 25 * cos(i), RGB(255, 255, 255)); x += 1; >ReleaseDC(hwnd, hdc); std::cin.ignore(); return 0; >
Кроме установки пикселя в наличии большое кол-во функций для рисования различных примитивов, с применением разных кистей (толщины, узора и т.п.).
Внимание! Работает сносно только в старых версиях Windows (Windows XP). Не использовать для современных систем, начиная с Vista.
Практическое руководство. Рисование линии в Windows Forms
В этом примере на форме рисуется линия. Как правило, при рисовании на форме вы обрабатываете событие формы Paint и выполняете рисование с помощью свойства Graphics объекта PaintEventArgs, как показано в этом примере
Пример
Pen pen = new Pen(Color.FromArgb(255, 0, 0, 0)); e.Graphics.DrawLine(pen, 20, 10, 300, 100);
Dim pen As New Pen(Color.FromArgb(255, 0, 0, 0)) e.Graphics.DrawLine(pen, 20, 10, 300, 100)
Компиляция кода
Предыдущий пример предназначен для работы с Windows Forms, и для него необходим объект PaintEventArgs e , передаваемый в качестве параметра обработчику событий Paint.
Отказоустойчивость
Всегда следует вызывать Dispose для любых объектов, использующих системные ресурсы, например Pen.
См. также
- DrawLine
- OnPaint
- Приступая к программированию графики
- Рисование линий и фигур с помощью пера
- Объекты Graphics и Drawing в Windows Forms
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
.NET Desktop feedback
The .NET Desktop documentation is open source. Provide feedback here.
Обратная связь
Отправить и просмотреть отзыв по
Как рисовать в c
Всем привет, извиняюсь, что не по теме, но никто не подскажет как рисовать квадрат линиями? В идеале хотелось бы научиться писать программу, которая будет несколько квадратов строить в определённых границах (в виде прямоугольника, к примеру), как клеточки в тетради
Регистрация: 12.01.2011
Сообщений: 19,500
Сообщение от Shodaime
которая будет несколько квадратов строить в определённых границах (в виде прямоугольника, к примеру), как клеточки в тетради
Квадрат это начальная точка (x и y), обычно левая-верхняя, + размер.
Соответственно чтобы нарисовать несколько надо просто в цикле менять x и y и рисовать.
То есть в целом как-то так:
struct Point < int x, y; Point(int x, int y) : x(x), y(y) < >>; struct Square < Point topLeft; int size; Square(const Point& topLeft, int size) : topLeft(topLeft), size(size) < >>; void drawSquare(const Square& square) < // ну и тут само рисование >int main() < const int size = 4; const int numberOfSquaresHorizontal = 5; const int numberOfSquaresVertical = 6; for (int x = 0; x < size * numberOfSquaresHorizontal; x += size) < for (int y = 0; y < size * numberOfSquaresVertical; y += size) < Square square(Point(x, y), size); drawSquare(square); >> return 0; >
Последний раз редактировалось Alex11223; 28.01.2017 в 19:50 .
Как рисовать в c
Процесс по шагам (на примере класса диалогового окна CmyDlg).
1.
void CmyDlg::OnPaint() < //Рисуем черный кружок с закрашенной внутри областью белым // цветом (параметры пера и кисти по умолчанию). RECT ellipse; CPaintDC dc(this); ellipse.top = 1; ellipse.left = 3; ellipse.bottom = 1+5; ellipse.right = 3+5; dc.Ellipse(&ellipse); //Рисуем квадратик с красным бордюром (сменим перо) // и зеленой закрашенной областью (сменим кисть). CPen aPen; aPen.CreatePen(PS_SOLID, 2, RGB(255, 0, 0)); CPen *pOldPen = dc.SelectObject(&aPen); CBrush aBrush; aBrush.CreateSolidBrush(RGB(0, 255, 0)); CBrush *pOldBrush = dc.SelectObject(&aBrush); dc.Rectangle(50,100,60,110); //Восстанавливаем старые перо и кисть. dc.SelectObject(pOldPen); dc.SelectObject(pOldBrush); . >
2. Чтобы принудительно перерисовать окно, нужно вызвать Invalidate().
Внимание! Вышеуказанное рисование работает только в методе OnPaint, к которому привязано сообщение WM_PAINT.
