Как рисовать в c visual studio
Процесс по шагам (на примере класса диалогового окна 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.
Рисование фигур и контуров
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
В конструкторе XAML фигура — это именно тот объект, который соответствует вашим представлениям. Например, прямоугольник, круг или эллипс. Объект контур является более универсальной версией фигуры. Можно, например, изменить эти объекты или объединить их в форме новых фигур.
Для фигур и контуров используется векторная графика, поэтому их легко масштабировать для дисплеев с высоким разрешением.
Рисование фигуры
Фигуры можно найти в окне Ресурсы.

Перетащите любую нужную фигуру в область рисования. Затем используйте маркеры фигуры, чтобы масштабировать, поворачивать, перемещать и наклонять фигуру.

Рисование контура
Контур — это последовательность соединенных линий и кривых. Используйте контур для создания интересных фигур, которые недоступны в окне Ресурсы.
Контур можно нарисовать с помощью линии, пера или карандаша. Эти инструменты доступны на панели Средства.
Рисование прямой линии
Используйте средства Перо или Линия.
Использование средства «Перо»
Щелкните один раз в области рисования, чтобы определить начальную точку, а затем щелкните еще раз для задания конечной точки линии.
Использование средства «Линия»
В области рисования зажмите кнопку мыши в том месте, где должна начинаться линия, затем перетащите и отпустите кнопку мыши там, где линия завершается.
Рисование кривой
Используйте средство Перо.
В области рисования щелкните один раз, чтобы определить начальную точку линии, а затем зажмите и перетащите указатель мыши, чтобы задать нужную кривизну.
Если требуется замкнуть контур, щелкните начальную точку линии.
Изменение формы кривой
Используйте средство Непосредственное выделение.
Щелкните фигуру, а затем потяните за любую точку на фигуре, чтобы изменить форму кривой.
Рисование контура произвольной формы
Используйте средство Карандаш.
Нарисуйте произвольный контур в области рисования, как если бы вы пользовались настоящим карандашом.
Удаление части контура
Используйте средство Непосредственное выделение.
Выберите контур, содержащий сегмент, который требуется удалить, и нажмите кнопку Удалить .
Удаление точки контура
Используйте средство Выделение, чтобы выбрать контур. Затем с помощью средства Перо выделите точку, которую требуется удалить.
Добавление точки контура
Используйте средство Выделение, чтобы выбрать контур. С помощью средства Перо щелкните в любом месте контура, где необходимо добавить точку.
Преобразование фигуры в контур
Чтобы изменить фигуру теми же способами, которые вы использовали для изменения контура, преобразуйте фигуру в контур. Выберите фигуру, а затем щелкните Формат>Контур>Преобразовать в контур.
Функция Преобразовать в путь сейчас недоступна для приложений UWP с TargetPlatformVersion версии 10.0.16299.0 и выше.
Объединение контуров
Контуры и фигуры можно объединить в один контур.

| Число | Действие |
|---|---|
![]() |
Две фигуры до объединения |
![]() |
США |
![]() |
Разделить |
![]() |
Intersect |
![]() |
Исключение перекрытия |
![]() |
Вычитание |
Создание составного пути
При создании составного контура все пересекающиеся части контуров исключаются из результата, и результирующий контур принимает визуальные свойства нижнего контура.
В любой момент после создания составного пути он может быть разбит на составляющие части.

Создание контура кадрирования
Контур обрезки — это контур или фигура, применяемая к другому объекту, чтобы скрыть части маскируемого объекта за пределами контура обрезки.
Как рисовать в c visual studio
БлогNot. Visual Studio, простое рисование на графической канве формы и дисплея
Visual Studio, простое рисование на графической канве формы и дисплея
В блоге уже есть ряд заметок, показывающих работу с графической канвой формы в Visual C++ (раз, два). Цель этого примера — продемонстрировать, как одним и тем же кодом вывести программно созданный рисунок сначала в окно формы, а затем просто на дисплей вне окна. Сделать последнее позволяет метод GetDC из Windows API, получающий контекст графического устройства.
Итак, создадим пустой проект Windows Forms, я делал из сохранённого заранее шаблона в Studio 2015. Дальше процесс расписан по шагам.
1. В классе формы определён флажок, показывающий, нужно ли перерисовывать картинку:
private: bool Redraw;
2. Он инициализирован в методе Load формы (так как при загрузке нужно отрисовать в первый раз):
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) < this->DoubleBuffered = true; //Включить для формы двойную буферизацию, чтоб не было "мерцаний" Redraw = true; >
3. Всё рисование делается в методе Paint формы (исключений из этого правила мало):
private: System::Void MyForm_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) < if (Redraw) Draw(e->Graphics); //Удобнее иметь свой отдельный метод для рисования > void Draw(System::Drawing::Graphics^ g) < //Графический контекст передан в наш метод array ^pens = gcnew array (3) < Pens::Red, Pens::Green, Pens::Black >; //Разные перья для рисования int width = (this->ClientSize.Width-1) / 2, //Половинки ширины и высоты клиентской части окна height = (this->ClientSize.Height-1) / 2; for (int i = 0; i < 2; i++) //Демо - рисуем перьями g->DrawEllipse(pens[i], i*width, i*height, width, height); array ^brushes = gcnew array (2) < Brushes::Red, Brushes::Green >; //Разные кисти для выполнения заливки цветом for (int i = 0; i < 2; i++) //Демо - рисуем кистями g->FillEllipse(brushes[i], i*width, i*height, width, height); g->DrawLine(pens[2], 0, 0, width*2, height*2); //Рисуем линию пером Redraw = false; //Ставим состояние "перерисовано" >
4. Некоторые события формы должны будут инициализировать принудительную перерисовку, например, когда пользователь закончил изменение размеров окна (событие SizeChanged ):
private: System::Void MyForm_SizeChanged(System::Object^ sender, System::EventArgs^ e) < Redraw = true; //Установить флажок Invalidate(); //Принудительно перерисовать >
5. Передав в наш Draw другой графический контекст (например, контекст графического экрана Windows), можно нарисовать ту же графику «в другом месте», например, поверх всех окон или под ними.
Покажем в качестве примера перехват графического контекста основного дисплея (при изменении размеров окна нашей формы картинка будет перерисовываться вне окна формы, начиная с левого верхнего угла экрана). Решение работает только для Windows.
5.1. Заинклудить в самом начале файла формы .h:
#include
5.2. Подключить к проекту стандартную Windows-библиотеку user32 . Для этого перейти к меню Проект, Свойства проекта, открыть слева список Компоновщик, затем Ввод, и прописать в поле «Дополнительные зависимости» значение
user32.lib
5.3. Проверить, что в namespace проекта подключены
using namespace System::Drawing; using namespace System::Runtime::InteropServices;
5.4. Метод Paint формы изменится, так как перед вызовом Draw он будет получать графический контекст дисплея:
private: System::Void MyForm_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) < if (Redraw) < HDC DesktopPointer = GetDC(NULL); Graphics ^ g = Graphics::FromHdc((IntPtr)DesktopPointer); Draw(g); ReleaseDC(NULL, DesktopPointer); >>
Рисование по-прежнему зависит от положения окна приложения, но можно было вместо this->ClientSize попытаться использовать размеры экрана.
18.10.2016, 14:14 [16077 просмотров]
Как рисовать в visual studio c++ 2010?
Здравствуйте. Подскажите, пожалуйста, как нарисовать линию на PictureBox в visual studio? Делал вот так, ошибок нет, но ни чего не происходит.
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) < pictureBox1->Refresh(); > private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) < // Create pen. Pen^ blackPen = gcnew Pen( Color::Black,3.0f ); // Create location and size of ellipse. int x = 0; int y = 0; int width = 100; int height = 100; // Draw ellipse to screen. e->Graphics->DrawEllipse( blackPen, x, y, width, height ); >
- Вопрос задан более трёх лет назад
- 3460 просмотров






