как рисовать в windows forms c

Как рисовать в windows forms c

Уроки Windows Forms C++/C#

Рисование линий в PictureBox MVS C++/C#

В этом уроке вы приступите к изучению базовых приёмов рисования в «PictureBox». И в данном уроке будет рассмотрено то, как нарисовать линию заданной длины, цвета и в заданном месте поля «PictureBox». Для этого нам понадобятся: 4 «textBox», 1 «button», и конечно же «PictureBox». Примерный вид программы:

как рисовать в windows forms c. 13.0. как рисовать в windows forms c фото. как рисовать в windows forms c-13.0. картинка как рисовать в windows forms c. картинка 13.0. Уроки Windows Forms C++/C#

То, как изменить цвет фона элемента (“PictureBox”) рассматривается в этом уроке. В “textBox”ы мы будем записывать начальное и конечное значение координат поля рисования: две координаты – одна точка, ещё две координаты – ещё одна точка, которая соединяется с предыдущей, образуя отрезок, заданного в коде программы цвета. Значение каждой координаты, получаемое из текстового поля, мы будем конвертировать в «int»Convert::ToInt32(textBox1->Text); А для хранения значения создаётся массив, его нужно объявить в верху программы: int m_p[4];

как рисовать в windows forms c. 13.1. как рисовать в windows forms c фото. как рисовать в windows forms c-13.1. картинка как рисовать в windows forms c. картинка 13.1. Уроки Windows Forms C++/C#

#pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) < this->Text = «Рисуем Линию»; button1->Text = «Рисовать»; > private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) < m_p[1] = Convert::ToInt32(textBox1->Text); m_p[2] = Convert::ToInt32(textBox2->Text); m_p[3] = Convert::ToInt32(textBox3->Text); m_p[4] = Convert::ToInt32(textBox4->Text); pictureBox1->Refresh(); > private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) < // Рисуем линию e->Graphics->DrawLine(System::Drawing::Pens::Green, m_p[1], m_p[2], m_p[3], m_p[4]); > >; >

Результат: как рисовать в windows forms c. 13.2. как рисовать в windows forms c фото. как рисовать в windows forms c-13.2. картинка как рисовать в windows forms c. картинка 13.2. Уроки Windows Forms C++/C#Следующий урок >>

Источник

Пример рисования в C#. «Кораблик»

Нарисуем корабль, например, такой:

как рисовать в windows forms c. %D0%9A%D0%BE%D1%80%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA. как рисовать в windows forms c фото. как рисовать в windows forms c-%D0%9A%D0%BE%D1%80%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA. картинка как рисовать в windows forms c. картинка %D0%9A%D0%BE%D1%80%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA. Уроки Windows Forms C++/C#

Ваши действия:

1) Создайте приложение Windows Forms, namespace = «Кораблик».
2) Размер формы задайте 900х500, на ней разместите визуальный объект для рисования pictureBox1, измените его свойство Dock = Fill; (он займет все пространство формы).
3) Кликнув на компоненте, вы создадите событие pictureBox1.Click и форму для метода обработки этого события pictureBox1_Click ();
4) Не забудьте добавить библиотеку System.Drawing. Ненужные библиотеки можно удалить (нужны всего три: System, System.Windows.Forms и System.Drawing).
5) В окне кода файла Form1.cs получите следующий текст:

Теперь нам осталось только написать обработчик события, добавленный нами метод pictureBox1_Click ( ), для чего вставим следующие операторы с комментариями:

В этом примере мы использовали методы класса Graphics: FillRectangle(), FillPolygon(), FillPie() и DrawEllipse(). Найдите их в таблице предыдущей статьи. Кроме того мы используем структуры Point; oбъекты-кисти класса SolidBrush; объект-перо класса Pen. Для рисования волн моря использовался цикл while, для иллюминаторов — цикл for. Полигон задается массивом точек для соединения их сплошной ломаной.
И все, программу можно проверять. Кликнув в окне, сможем увидеть наш кораблик:
как рисовать в windows forms c. %D0%9A%D0%BE%D1%80%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA. как рисовать в windows forms c фото. как рисовать в windows forms c-%D0%9A%D0%BE%D1%80%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA. картинка как рисовать в windows forms c. картинка %D0%9A%D0%BE%D1%80%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA. Уроки Windows Forms C++/C#

4 комментария к “Пример рисования в C#. «Кораблик»”

это делается через класс?

Да. Объект g класса Graphics объявляется в методе pictureBox1_Click(), который в свою очередь задан как метод Form1.
Рисование (после клика на pictureBox1) состоит в вызове методов класса Graphics.

А что за namespace = «Кораблик».

Имя может быть любое, даже записанное русскими буквами. Вы, когда создаете проект и выбираете его шаблон, в окне «Настроить новый проект» вместо имени по умолчанию WindowsFormsApp1 (или подобного) напишите любое другое допустимое имя, например, Океанский_лайнер, измените, если необходимо, путь к Вашему проекту, и нажмите кнопку «Создать» (проект). Весь Ваш проект теперь будет в папке Океанский_лайнер. Думаю, что это удобно. Я чаще имя пространства имен задаю двумя-тремя английскими словами, например Ocean_Liner. То есть у Вас полная свобода выбора, пишите, как Вам удобно, важно, чтобы новые компоненты проекта находились в этом namespace или были подключены через директиву using (как System и другие).

Источник

Рисование в Form геометрических фигур

Нужно нарисовать в Form геометрическую фигуру. Я думаю что рисовать нужно на каком-то объекте я взял PictureBox и попытался рисовать на нем, но вышли ошибки, может я что-то не так сделал и есть другие объекты для рисования на них? И еще после того как я нарисовал пробную линию она через несколько секунд исчезла, как сделать чтобы нарисованный объект не исчезал.

Рисование геометрических фигур
как реализовать эту геометрическую фигуру?

Рисование геометрических фигур толстой линией
Добрый день, уважаемые коллеги. Рисую дорожные знаки в маленьком разрешении и столкнулся со.

Определение геометрических фигур на картинке
Добрый день. Подскажите библиотеку которая способна находить определённые геометрические фигуры.

Привожу код построения, например, эллипса. Аналогично можно строить прямоугольники, многоугольники и пр.

Слушайте ViterAlex, он дело говорит

Ошибка в твоем коде, что не указана толщина линии.
Сейчас ничего не исчезнет.

На форме только PictureBox и кнопка

Добавлено через 1 минуту

Да у меня курсовая а там кнопки на сером фоне и белый экранчик на котором происходит рисование. Конечно можно в свойствах PictureBox задать белый цвет, но хотел все по умному сделать, правильно, чтобы кодом а не настройками цвет устанавливался.

Добавлено через 3 минуты
Я понимаю что рисую на форме, но для начала я хотел просто изображение загрузить и не получилось.

Движение можно создать и на форме заливая одну картинку поверх другой.

Почему этот код не работает?

как рисовать в windows forms c. tick. как рисовать в windows forms c фото. как рисовать в windows forms c-tick. картинка как рисовать в windows forms c. картинка tick. Уроки Windows Forms C++/C#Контейнер для геометрических фигур
Доброго времени суток, необходимо создать однонаправленный либо двунаправленный список.

как рисовать в windows forms c. tick. как рисовать в windows forms c фото. как рисовать в windows forms c-tick. картинка как рисовать в windows forms c. картинка tick. Уроки Windows Forms C++/C#Помощь в построение рисунков геометрических фигур
Всем привет! Помогите составить программу которая при нажатии на кнопку строит отрезок по заранее.

Конструктор для создания геометрических фигур
Можно ли обратиться к целому объекту, созданному в конструкторе? Раньше я создавала кольцо из 3.

Источник

Двумерная графика на C#, классы Graphics, Pen и Brush

На примере графики наглядно видны преимущества ООП, смысл использования классов, их методов и свойств. Добавляя в пространство имен своего проекта соответствующие библиотеки, вы получаете сразу набор инструментов, необходимых для графики. Это графические примитивы (линии, прямоугольники, эллипсы и т.п.), перо для черчения, кисть для закраски и много других полезных объектов и методов.

2D-графика делится, как вы знаете, на растровую и векторную. Растровое изображение — это набор цветных пикселей, заданных в прямоугольной области, хранящихся в файлах *.bmp, *.jpg, *.png и т.п. Самый простой растровый редактор — программа Paint. Векторная графика намного экономнее (по объемам памяти) растровой. Так для рисования прямоугольника достаточно задать координаты двух точек (левого верхнего и правого нижнего углов) и цвет и толщину линии. В этом разделе в основном рассмотрим методы векторной графики.

Класс Graphics предоставляет методы рисования на устройстве отображения (другие термины — графический контекст, «холст»). Определимся сразу, на чем мы хотим рисовать. Далее в примерах он обозначается как объект g.

Способы задания «холста»

1. Графический объект — «холст» для рисования на форме Form1 (указатель this) можно задать, например, одним оператором:
Graphics g = this.CreateGraphics();
Примечание. Заметим, что стандартным образом
Graphics g = new Graphics();
создать объект-холст не удается.
На этом операторе генерируется ошибка:
Для типа «System.Drawing.Graphics» не определен конструктор.

2. Еще пример задания графического контекста на визуальном компоненте PictureBox (ящик для рисования) через растровый объект класса Bitmap. В классе Form1 зададим два объекта:
Graphics g; // графический объект — некий холст
Bitmap buf; // буфер для Bitmap-изображения
В конструктор Form1() добавим следующие операторы:
buf = new Bitmap(pictureBox1.Width, pictureBox1.Height); // с размерами
g = Graphics.FromImage(buf); // инициализация g

3. В принципе, иногда (если все графические операции выполняются внутри одной функции) эти четыре строки могут быть заменены одной строкой:
Graphics g = Graphics.FromImage(new Bitmap(pictureBox1.Width, pictureBox1.Height));
После этого можно задать фон холста белым:
g.Clear(Color.White);

4. Еще один пример задания «холста» на форме через дескриптор окна:
Graphics g = Graphics.FromHwnd(this.Handle);
Далее в примерах конкретизируются эти способы.

Объекты других классов из библиотеки System.Drawing

Такие классы, как Rectangle (прямоугольник) и Point (точка) инкапсулируют элементы GDI+. Отметим, что Point вообще то является структурой (struct) с полями x,y. Это уточнение несущественно, так как в C# структуры похожи на классы, a инициализация объекта-структуры point может выглядеть так же, как инициализация объекта-класса:
Point point= new Point();

Класс Pen (перо) используется для рисования линий и кривых, а классы, производные от класса Brush (кисть) используются для закраски замкнутых контуров (см. ниже).

Класс GraphicsPath позволяет задавать последовательность соединенных линий и кривых, класс Region описывает внутреннюю часть графической формы, состоящей из многоугольников и контуров.

Класс Image – абстрактный базовый класс предоставляет функциональные возможности для производных классов Bitmap и Metafile. Bitmap используется для работы с пиксельными изображениями (см. выше пример). Metafile определяет графический метафайл, содержащий записи, описывающие последовательность графических операций, которые могут быть записаны (созданы) и воспроизведены (отображается). Этот класс не наследуется.

Класс Graphics

Он инкапсулирует поверхность рисования GDI+. Этот класс не наследуется. Методов в этом классе огромное количество, поэтому сначала представим их в таблице, а затем рассмотрим некоторые из них с примерами и пояснениями.
В третьем столбце таблицы указывается число перегрузок метода, различающихся набором параметров (используйте интеллектуальную подсказку IntelliSense для выбора нужного Вам варианта метода).

Имя методаОписаниеЧисло перегрузок
Clear(Color)Очищает всю поверхность рисования и выполняет заливку поверхности указанным цветом фона.1
CopyFromScreen(Point, Point, Size)Выполняет передачу данных о цвете, соответствующих прямоугольной области пикселей, блоками битов с экрана на поверхность рисования объекта Graphics.4
Dispose()Освобождает все ресурсы, используемые данным объектом Graphics.1
DrawArc(Pen, Rectangle, Single, Single)Рисует дугу, которая является частью эллипса, заданного структурой Rectangle.4
DrawBezier(Pen, Point, Point, Point, Point)Рисует кривую Безье, определяемую четырьмя структурами Point.3
DrawBeziers(Pen, Point[])Рисует несколько (N) кривых Безье, определяемых массивом из (3N+1) структур Point.2
DrawCloseCurve(Pen, Point[ ])Рисует замкнутый фундаментальный сплайн4
DrawEllipse(Pen, Rectangle)Рисует эллипс4
DrawIcon(Icon, Rectangle)Рисует значок2
DrawImage(Image image, int x, int y)Рисует заданное изображение image, используя его фактический размер в месте с координатами (x,y)30
DrawLine(Pen, Point, Point)Проводит линию, соединяющую две структуры Point.4
DrawLines(Pen, Point[ ])Рисует набор сегментов линий, которые соединяют массив структур Point.2
DrawPath(Pen, gp)Рисует пером Pen объект GraphicsPath gp.1
DrawPie(Pen, Rectangle, Single, Single)Рисует сектор, который определяется эллипсом, заданным структурой Rectangle и двумя радиалtьными линиями.4
DrawPolygon(Pen, Point[])Рисует многоугольник, определяемый массивом структур Point.2
DrawRectangle(Pen, Rectangle)Рисует прямоугольник, определяемый структурой Rectangle.3
DrawRectangles(Pen, Rectangle[])Рисует набор прямоугольников, определяемых структурами Rectangle.2
DrawString(String, Font, Brush, PointF)Создает указываемую текстовую строку в заданном месте с помощью определяемых объектов Brush и Font.6
Equals(Object)Определяет, равен ли заданный объект текущему объекту. (Унаследовано от Object.)1
ExcludeClip(Rectangle)Обновляет вырезанную область данного объекта Graphics, чтобы исключить из нее часть, определяемую структурой Rectangle.1
ExcludeClip(Region)Обновляет вырезанную область данного объекта Graphics, чтобы исключить из нее часть, определяемую структурой Region.1
FillClosedCurve(Brush, Point[])Заполняет внутреннюю часть замкнутой фундаментальной кривой, определяемой массивом структур Point.6
FillEllipse(Brush, Rectangle)Заполняет внутреннюю часть эллипса, определяемого ограничивающим прямоугольником, который задан структурой Rectangle.4
FillPath(Brush, GraphicsPath)Заполняет внутреннюю часть объекта GraphicsPath.1
FillPie(Brush, Rectangle, Single, Single)Заполняет внутреннюю часть сектора, определяемого эллипсом, который задан структурой RectangleF, и двумя радиальными линиями.3
FillPolygon(Brush, Point[])Заполняет внутреннюю часть многоугольника, определяемого массивом точек, заданных структурами Point.4
FillRectangle(Brush, Rectangle)Заполняет внутреннюю часть прямоугольника, определяемого структурой Rectangle.4
FillRegion(Brush, Region)Заполняет внутреннюю часть объекта Region.1
Flush()Вызывает принудительное выполнение всех отложенных графических операций и немедленно возвращается, не дожидаясь их окончания.2
IntersectClip(Region)Обновляет вырезанную область данного объекта, включая в нее пересечение текущей вырезанной области и указанной структуры3
ResetClip()Сбрасывает выделенную область g, делая ее бесконечной1

Подробнее еще о двух классах.

Класс Pen

Класс Pen определяет объект, используемый для рисования прямых линий и кривых. Этот класс не наследуется. Конструкторы класса (тоже пример перегрузки методов):
1) Pen(Color) инициализирует новый экземпляр класса Pen с указанным цветом.
2) Pen(Color, Single) инициализирует новый экземпляр класса Pen с указанными свойствами Color и Width. (Width — устанавливает ширину пера Pen, в единицах объекта Graphics, используемого для рисования
Например:
Pen redPen = new Pen(Color.Red); // толщина пера по умолчанию 1 пиксель
или используя промежуточную переменную green
Color green = Color.Green;
Pen greenPen = new Pen(green, 4.5f);
Можно вводить новый объект без указания явного имени пера (пример создания динамического объекта — пера):
g.DrawRectangle(new Pen(Color.Red, 3), r);
например, для рисования прямоугольника r красным пером толщиной 3 пикселя, используя графический контекст («холст») g.

Класс Brush

Класс Brush определяет объекты, которые используются для заливки внутри графических фигур, таких как прямоугольники, эллипсы, круги, многоугольники и дорожки. Это абстрактный базовый класс, который не может быть реализован. Для создания объекта «кисть» используются классы, производные от Brush, такие как SolidBrush, TextureBrush и LinearGradientBrush, например:
SolidBrush br = new SolidBrush(Color.Aqua);
g.FillRectangle(br, r); // закраска прямоугольника r на «холсте» g
Или без явного объявления объекта «кисть» br:
g.FillRectangle(new SolidBrush(Color.Red), r);

Для первоначального привыкания к стилю ООП в графике рассмотрим первый пример рисования.

Источник

Отрисовка элементов управления Windows Forms

Отрисовка обозначает процесс создания визуального представления на экране пользователя. Windows в формах для отрисовки используется GDI (новая библиотека Windows graphics). Управляемые классы, предоставляющие доступ к GDI, находятся в System.Drawing пространстве имен и его подпространствах имен.

При отрисовке элемента управления используются следующие элементы:

Функции рисования, предоставляемые базовым классом System.Windows.Forms.Control.

Обязательные элементы библиотеки графических объектов GDI.

Геометрия области рисования.

Процедура высвобождения графических ресурсов.

Функциональные возможности рисования, предоставляемые элементом управления

Класс данных событий для Paint события, PaintEventArgs содержит данные, необходимые для рисования элемента управления — маркер графического объекта и прямоугольника, представляющий регион для рисования. Эти объекты показаны жирным шрифтом в следующем фрагменте кода.

Graphics — Это управляемый класс, который инкапсулирует функциональные возможности рисования, как описано в разделе о GDI далее в этой статье. ClipRectangle является экземпляром структуры Rectangle и определяет доступную область, в которой можно нарисовать элемент управления. Разработчик элемента управления может вычислить значение ClipRectangle с помощью ClipRectangle свойства элемента управления, как описано в обсуждении геометрии далее в этом разделе.

Элемент управления должен предоставлять логику отрисовки путем переопределения метода OnPaint, который он наследует от Control. OnPaint получает доступ к графическому объекту и прямоугольнику для рисования с помощью свойств Graphics и ClipRectangle экземпляра PaintEventArgs, переданного в него.

Базовый Control класс определяет другой метод, который удобен для рисования — OnPaintBackground метод.

OnPaintBackground Закрашивает фон (и, таким образом, форму) окна и гарантированно быстрым, в то же время OnPaint рисуя детали и может быть медленнее, поскольку отдельные запросы рисования объединяются в одно Paint событие, охватывающее все области, которые необходимо перерисовать. Может потребоваться вызвать OnPaintBackground, если, например, нужно нарисовать градиентный фон для элемента управления.

Основы GDI+

GraphicsКласс предоставляет методы для рисования различных фигур, таких как круги, треугольники, дуги и эллипсы, а также методы для отображения текста. System.DrawingПространство имен и его подпространства имен содержат классы, инкапсулирующие графические элементы, такие как фигуры (круги, прямоугольники, дуги и др.), цвета, шрифты, кисти и т. д. Дополнительные сведения о GDI см. в разделе Использование управляемых графических классов. основные сведения о GDI также описаны в разделе как создать элемент управления Windows Forms, отображающий ход выполнения.

Геометрия области рисования

ClientRectangleСвойство элемента управления указывает прямоугольную область, доступную для элемента управления на экране пользователя, а ClipRectangle свойство объекта — PaintEventArgs область, которая на самом деле окрашена. (Помните, что рисование выполняется в Paint методе события, который принимает PaintEventArgs экземпляр в качестве аргумента). Элементу управления может потребоваться закрасить только часть его доступной области, например в случае, когда изменяется небольшой раздел элемента управления. В таких ситуациях разработчик элемента управления должен вычислить фактический прямоугольник для рисования и передать его в Invalidate. Перегруженные версии Invalidate, принимающие Rectangle или Region в качестве аргумента, используют этот аргумент для создания свойства ClipRectangle элемента PaintEventArgs.

В следующем фрагменте кода показано, как FlashTrackBar Пользовательский элемент управления выполняет вычисление прямоугольной области для рисования. client Переменная обозначает ClipRectangle свойство. полный пример см. в разделе как создать элемент управления Windows Forms, отображающий ход выполнения.

Освобождение графических ресурсов

В следующем фрагменте кода показано, как FlashTrackBar Пользовательский элемент управления создает и освобождает Brush ресурс. полный исходный код см. в разделе как создать элемент управления Windows Forms, отображающий ход выполнения.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *