Drawellipse c windows forms

Урок 23. Графические методы DrawLine, DrawEllipse и DrawRectangle

Урок из серии: «Программирование на Visual Basic.NET для школьников»

В прошлом уроке мы познакомились с объектами, необходимыми для рисования и с графическими методами языка Visual Basic.NET.

В этом уроке рассказывается о графической системой координат, вы узнаете где нужно размещать графический программный код, научитесь применять графические методы DrawLine, DrawEllipse и DrawlRectangle.

Методом DrawLine рисуется отрезок прямой линии . Параметрами этого метода, кроме пера, являются координаты двух точек — начала и конца линии.

Методом DrawRectangle создается прямоугольник . Параметрами этого метода являются перо, координаты верхнего левого угла, ширина и высота.

Метод DrawEllipse используется для создания эллипса .Эллипс создается как геометрическая фигура, вписанная в прямоугольник. То есть самого прямоугольника на рисунке не видно, но параметры эллипса одновременно являются параметрами такого прямоугольника.

Рисование линий, прямоугольников и других фигур производится в компьютерной системе координат, начало которой расположено в верхнем левом углу области рисования. Ось X направлена вправо, а ось Y направлена вниз. Единицей измерения по умолчанию является точка (пиксель).

Компьютерная система координат графического поля шириной 300 точек и высотой 200 точек приведена на рисунке.

Где размещать графический программный код?

Графические методы не следует вызывать в обработчике события Form_Load. Программный код этой процедуры выполняется только один раз при загрузке формы. Если будет изменен размер формы или форма будет скрыта диалоговым окном или другой формой, рисунок перерисовываться не будет. Рисунок также исчезнет, если вы минимизируете окно формы, а затем снова его развернете.

Формы и элементы управления имеют событие Paint, происходящее каждый раз, когда они должны быть перерисованы, например, при первом отображении формы или когда форма закрывается другим окном.

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

Проект «Система координат»

Создайте проект в котором в графическом поле на форме рисуется компьютерная система координат. Объект Graphics (Область рисования) создать первым способом, т.е. с использованием метода СreateGraphics() элемента управления PictureBox.

  1. Создайте проект под именем «система координат»
  2. Поместите на форму :
    • Графическое поле PictureBox1, которое будет использоваться в качестве области рисования;
    • Кнопку Button1 для создания обработчика события рисования осей и вывода шкал компьютерной системы координат.
  3. Установите размеры графического поля PictureBox1: присвоить свойству Width значение 300, а свойству Height – значение 200.
  4. Объявите переменные

Проект «Мои фигуры «

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

  1. Создайте проект с именем Мои фигуры. Увеличьте размер формы. Вам понадобится место для создания графических фигур.
  2. Измените свойство Text формы Form1 на значение Рисование фигур.
  3. Область рисования, т.е. объект Graphics, создадим третьим способом, используя событие Paint формы.
    • Откройте окно Редактор кода, для этого выполните команду Посмотреть код в контекстном меню формы или щелкните в Обозревателе решений на кнопке Просмотреть код.
    • В редакторе кода слева в раскрывающемся списке Имя класса выберите Form1 Events — это список событий вашего проекта, ассоциированных с объектом Form1.
    • Справа в раскрывающемся списке Имя метода выберите событие Paint.

В Редакторе кода появится процедура события Form1_Paint. Это место, где вы должны ввести код программы, который должен исполняться при обновлении формы Visual Basic.


Рисуем три графические фигуры — красную линию, синий прямоугольник, зеленый эллипс. Для этого в событийной процедуре Form1_Paint введите следующий код:

В этом уроке было показано применение графических методов DrawLine, DrawEllipse и DrawlRectangle

В дополнение к приведенным здесь методам, которые создают пустые или «незаполненные» фигуры, существует несколько методов, которые рисуют фигуры, автоматически заполняемые каким-либо цветом. Эти методы обычно имеют префикс «Fill» (заполнить): FillRectangle, FillEllipse и FillPolygon. Их мы рассмотрим на следующем уроке.

Drawing Context. Draw Ellipse Метод

Определение

Рисование эллипса. Draws an ellipse.

Перегрузки

Рисует эллипс заданными Brush и Pen. Draws an ellipse with the specified Brush and Pen.

Рисует эллипс заданными Brush и Pen и применяет заданные часы анимации. Draws an ellipse with the specified Brush and Pen and applies the specified animation clocks.

DrawEllipse(Brush, Pen, Point, Double, Double)

Рисует эллипс заданными Brush и Pen. Draws an ellipse with the specified Brush and Pen.

Параметры

Кисть для рисования эллипса. The brush with which to fill the ellipse. Этот параметр является необязательным и может иметь значение null . This is optional, and can be null . Если в качестве кисти задано значение null , заливка не рисуется. If the brush is null , no fill is drawn.

Перо для обводки эллипса. The pen with which to stroke the ellipse. Этот параметр является необязательным и может иметь значение null . This is optional, and can be null . Если в качестве пера задано значение null , штриховка не рисуется. If the pen is null , no stroke is drawn.

Местоположение центра эллипса. The location of the center of the ellipse.

Горизонтальный радиус эллипса. The horizontal radius of the ellipse.

Вертикальный радиус эллипса. The vertical radius of the ellipse.

Комментарии

Кисть и перо могут быть оба null . The brush and the pen can both be null . Если кисть имеет значение null , то заливка не выполняется. If the brush is null , then no fill is performed. Если перо имеет значение null , необходимо не выполняется. If the pen is null , then no stoke is performed. Если используется и перо, и кисть null , то Рисование не отображается. If both the pen and the brush are null , then the drawing is not visible.

Применяется к

DrawEllipse(Brush, Pen, Point, AnimationClock, Double, AnimationClock, Double, AnimationClock)

Рисует эллипс заданными Brush и Pen и применяет заданные часы анимации. Draws an ellipse with the specified Brush and Pen and applies the specified animation clocks.

Параметры

Кисть для рисования эллипса. The brush with which to fill the ellipse. Этот параметр является необязательным и может иметь значение null . This is optional, and can be null . Если в качестве кисти задано значение null , заливка не рисуется. If the brush is null , no fill is drawn.

Перо для обводки эллипса. The pen with which to stroke the ellipse. Этот параметр является необязательным и может иметь значение null . This is optional, and can be null . Если в качестве пера задано значение null , штриховка не рисуется. If the pen is null , no stroke is drawn.

Местоположение центра эллипса. The location of the center of the ellipse.

Часы, с использованием которых следует анимировать позицию центра эллипса, или null , чтобы анимация не выполнялась. The clock with which to animate the ellipse’s center position, or null for no animation. Эти часы должны быть созданы из AnimationTimeline, способного анимировать объекты Point. This clock must be created from an AnimationTimeline that can animate Point objects.

Горизонтальный радиус эллипса. The horizontal radius of the ellipse.

Часы, с использованием которых следует анимировать x-радиус эллипса, или null , чтобы анимация не выполнялась. The clock with which to animate the ellipse’s x-radius, or null for no animation. Эти часы должны быть созданы из AnimationTimeline, способного анимировать объекты Double. This clock must be created from an AnimationTimeline that can animate Double objects.

Вертикальный радиус эллипса. The vertical radius of the ellipse.

Часы, с использованием которых следует анимировать y-радиус эллипса, или null , чтобы анимация не выполнялась. The clock with which to animate the ellipse’s y-radius, or null for no animation. Эти часы должны быть созданы из AnimationTimeline, способного анимировать объекты Double. This clock must be created from an AnimationTimeline that can animate Double objects.

Комментарии

Кисть и перо могут быть оба null . The brush and the pen can both be null . Если кисть имеет значение null , то заливка не выполняется. If the brush is null , then no fill is performed. Если перо имеет значение null , необходимо не выполняется. If the pen is null , then no stoke is performed. Если используется и перо, и кисть null , то Рисование не отображается. If both the pen and the brush are null , then the drawing is not visible.

Graphics. Draw Ellipse Метод

Определение

Рисует эллипс, определяемый ограничивающим прямоугольником, заданным с помощью пары координат, ширины и высоты. Draws an ellipse defined by a bounding rectangle specified by a pair of coordinates, a height, and a width.

Перегрузки

Рисует эллипс, определяемый ограничивающей структурой Rectangle. Draws an ellipse specified by a bounding Rectangle structure.

Рисует эллипс, определяемый ограничивающей структурой RectangleF. Draws an ellipse defined by a bounding RectangleF.

Рисует эллипс, определяемый ограничивающим прямоугольником, заданным с помощью координат верхнего левого угла прямоугольника, высоты и ширины. Draws an ellipse defined by a bounding rectangle specified by coordinates for the upper-left corner of the rectangle, a height, and a width.

Рисует эллипс, определяемый ограничивающим прямоугольником, заданным с помощью пары координат, ширины и высоты. Draws an ellipse defined by a bounding rectangle specified by a pair of coordinates, a height, and a width.

DrawEllipse(Pen, Rectangle)

Рисует эллипс, определяемый ограничивающей структурой Rectangle. Draws an ellipse specified by a bounding Rectangle structure.

Параметры

Структура Pen, определяющая цвет, ширину и стиль эллипса. Pen that determines the color, width, and style of the ellipse.

Структура Rectangle, определяющая границы эллипса. Rectangle structure that defines the boundaries of the ellipse.

Исключения

pen имеет значение null . pen is null .

Примеры

Следующий пример кода предназначен для использования с Windows Forms и требует PaintEventArgs e , что является параметром Paint обработчика событий. The following code example is designed for use with Windows Forms, and it requires PaintEventArgs e , which is a parameter of the Paint event handler. Код выполняет следующие действия. The code performs the following actions:

Создает черное перо. Creates a black pen.

Создает прямоугольник для привязки эллипса. Creates a rectangle to bound an ellipse.

Отображает эллипс на экране. Draws the ellipse to the screen.

Комментарии

Этот метод рисует эллипс, определяемый ограничивающим прямоугольником, заданным rect параметром. This method draws an ellipse that is defined by the bounding rectangle specified by the rect parameter.

Windows Form drawn ellipse Select and Delete Particularly selected

I have drawn Some Ellipses on Windows Form.

Is it Possible for ‘c# Window Form’ to ‘mouse click’ on an ellipse and to delete it.

Code from Comments

3 Answers 3

Yes its possible.

I assume that you know the positions and dimensions of the ellipses and have them stored in a list. Then you can use the MouseDown and iterate through the ellipses. How to check, if a point is in an ellipse, can be found here for example.

If you found a clicked ellipse remove it from your list and repaint everything.

Update: To your code. You dont need to call CreateGraphics all the time. The graphics object is given in the PaintEventArgs (e.Graphics). Also you dont need to create a pen every time.

I’ve just tried this demo, well there are fairly much work. It’s just a demo because there are still many features lacked and also the memory leakage problem is not ensured to not occur. Drawing some thing directly using some methods of Graphics object won’t help you support some interaction (like hittesting). You have to draw a GraphicsPath or a Region using the methods FillPath or FillRegion . In this demo, I used GraphicsPath , is has 2 interesting methods to help us implement hittesting which are IsVisible and IsOutlineVisible , in this case we just use IsVisible . Now is the code for you:

Usage: I implemented only 3 events: MouseEnter , MouseLeave and Click . These events are very similar to the events we use with normal control. Here is the demo code for you to test, it will render the ellipse on a form:

Note that you can create your own class for other shapes.

UPDATE: I updated the Ellipse class with some modification to avoid memory leakage, to delete the ellipse you just need to call Dispose , it will delete the ellipse and you can’t use it anymore, for your requirement with a List , try this:

Graphics.DrawEllipse() обрезает нижнюю и правую границы круга

Получается, прямоугольная область для рисования вычисляется автоматически через g.VisibleClipBounds (причём правильно — проверенно). Graphics.DrawEllipse() должен вписать эллипс в эту область, но обрезает его нижние и правые пиксели:

Почему так? Он же должен нормально вписать эллипс. Как исправить?
Заранее спасибо.

Как правильно вычислить правую и нижнюю границу блоков?
Имеется блок, внутри которого расположены несколько разных по размеру блоков, которые лежат.

Поменять местами левую нижнюю и правую верхнюю четверти матрицы.
Дана матрица размера M × N (M и N — четные числа). Поменять мес-тами левую нижнюю и правую верхнюю.

Минимальный путь из левой верхней в правую нижнюю клетку таблицы.
Не могу понять в чем ошибка. помогите. Химическая тревога (Время: 1 сек. Память: 16 Мб.

Хех. Только что редактировал в редакторе картинку редактора с картинкой, на которой изображён неправильный заполненный круг.

Тематические курсы и обучение профессиям онлайн
Профессия‌ С#-разработчик‌ (Skillbox)
Архитектор ПО (Skillbox)
Профессия Тестировщик (Skillbox)

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Поменять местами левую верхнюю и правую нижнюю четверти матрицы
Сформировать произвольно двумерный массив L(7,9). Поменять местами левую верхнюю и правую нижнюю.

Поменять местами левую верхнюю и правую нижнюю четверти матрицы — С и C++
Добрый вечер. Я новичок в программировании и не могу понять, как нужно делать данную программу.

Поменять местами левую верхнюю и правую нижнюю четверти матрицы
Дана матрица размера MЧN (M и N – четные числа). Поменять местами левую верхнюю и правую нижнюю.

Поменять местами левую верхнюю и правую нижнюю четверти матрицы
Помогите решить задачу, написал код не могу понять где ошибка. Задача: Дана матрица размера M.

Читайте также:  Xubuntu или windows 10
Оцените статью