При третьем способе создания объекта graphics цвет устанавливается как значение свойства

Уроки 114 — 120
§4.13. Графика в объектно-ориентированных языках программирования

Содержание урока

4.13.1. Графика в языках программирования Visual Basic .NET, Visual C# и Visual J#

Объект Graphics (Область рисования)

4.13.2. Графика в языке программирования Turbo Delphi
4.13.3. Компьютерная и математическая системы координат
4.13.4. Анимация

4.13.1. Графика в языках программирования Visual Basic .NET, Visual C# и Visual J#

Объект Graphics (Область рисования)

Интегрированная система программирования Visual Studio для создания рисунков, рисования текста и отображения графических изображений на формах и элементах управления использует GDI (Graphics Device Interface — графический интерфейс устройств).

Объект Graphics (Область рисования). Для использования GDI сначала необходимо создать область рисования, т. е. объект Graphics. Объект Graphics можно создать тремя различными способами.

Первый способ состоит в использовании метода CreateGraphics () формы или элемента управления, на котором надо отобразить графику. Например, создадим объект Graph1 типа Graphics для графического поля PictureBox1.

Язык Visual Basic .NET:
Dim Graphl As Graphics = PictureBoxl.
CreateGraphics ( )

Языки Visual C# и Visual J#:
Graphics Graphl = pictureBoxl.
CreateGraphics ( );

Второй способ используется для создания растрового изображения, которое можно сохранить как графический файл. Сначала необходимо объявить создание растрового изображения Image1 определенного размера, затем объявить создание объекта Graph1 типа Graphics из растрового изображения Image1 и, наконец, присвоить свойству Image формы или элемента управления (например, PictureBox1. Image) значение Image1.

Язык Visual Basic .NET:
Dim Imagel As new Bitmap (200, 200)
Dim Graphl As Graphics = Graphics,
FromImage(Image1)
PictureBox1.Image = Image1

Язык Visual C#:
Bitmap imagel = new Bitmap(200,200);
Graphics Graph1 — Graphics.FromImage(image1);
pictureBox1.Image = image1;

Язык Visual J#:
Bitmap image1 = new Bitmap(200,200);
Graphics Graph1 = Graphics.FromImage(image1);
pictureBox1.set_Image(image1);

Третий способ использует событие Paint формы или элемента управления, которое происходит при их создании или обновлении. В обработчике этого события одним из аргументов является е типа System.Windows.Forms.PaintEventArgs. В программном коде обработчика события можно объявить создание объекта Graph1 типа Graphics как свойства аргумента е.

Язык Visual Basic NET:
Private Sub FictureBox1_Paint(ByVal sender
As Object, ByVal e As System.Windows.Forms.
PaintEventArgs) Handles PictureBox1.Paint
Dim Graphl As Graphics = e.Graphics
End Sub

Язык Visual C#:
private void pictureBox1_Paint(object sender,
System.Windows.Forms.PaintEventArgs e)
<
Graphics Graph1 = e.Graphics;
>

Язык Visual J#:
private void pictureBox1_Paint (Object sender,
System.Windows.Forms.PaintEventArgs e)
<
Graphics Graph1 = e,get_Graphics ();
>

Перо. Объект Реn (Перо) определяет цвет и ширину линии рисования. В разделе объявления переменных необходимо определить имя объекта (например, Pen1), установить цвет (например, красный Color. Red) и ширину линии в пикселях (например, 3).

Язык Visual Basic .NET:
Dim Pen1 As New Pen (Color.Red, 3)

Язык Visual C#:
Pen Pen1 = new Pen (Color.Red, 3);

Язык Visual J#:
Pen Pen1 = new Pen (Color.get_Red(), 3);

Кисть. Объект Brush (кисть) определяет цвет и стиль закрашивания прямоугольников, окружностей и других замкнутых фигур. В разделе объявления переменных необходимо определить имя объекта (например, Brush1) и установить тип закраски и цвет (например, сплошная закраска синего цвета SolidBrush (Color.Blue)).

Язык Visual Basic NET:
Dim Brush1 As New SolidBrush(Color.Blue)

Язык Visual C#:
SolidBrush Brushl = new SolidBrush(Color.Blue);

Язык Visual J#:
SolidBrush Brush1 = new SolidBrush(Color.get_Blue( ));

Цвет. Цвет устанавливается как значение свойства Color. Можно установить цвет с использованием нескольких десятков цветовых констант. Ниже приведены примеры установки зеленого цвета для объекта Pen1 (перо) и желтого цвета для объекта Brush1 (кисть).

Языки Visual Basic .NET и Язык Visual С#:
Pen1,Color = Color.Green Brush1.Color = Color.Yellow

Язык Visual J#:
Pen1.set_Color (Color.get_Green ());
Brush1. set_Color (Color.get_Yellow());

Для установки цвета в 24-битовой палитре цветов RGB используется метод Color. FromArgb (Red, Green, Blue), аргументами которого являются три числа в диапазонах 0 до 255 (интенсивности красного, зеленого и синего цветов). Например, так можно установить пурпурный цвет для кисти Brush1.

Читайте также:  Процесс получения стали способы производства сталей

Языки Visual Basic .NET и Язык Visual С#:
Brush1.Color = Color.FromArgb(255, 0, 255)

Язык Visual J#:
Brush1.set_Color(Color.FromArgb(255,0,255));

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

Языки Visual Basic .NET и Язык Visual С#:
ColorDialog1.ShowDialog( )
Pen1.Color = ColorDialog1.Color

Язык Visual J#:
colorDialog1.ShowDialog( );
Pen1.set_Color(ColorDialog1.get_Color( ));

После выполнения первой строки программного кода появится диалоговое окно Цвет (рис. 4.32). Вторая строка программного кода присваивает перу цвет, который можно выбрать в диалоговом окне Цвет с помощью мыши из палитры 48 основных цветов. После щелчка по кнопке Определить цвет в раскрывшемся диалоговом окне цвет можно выбрать из полной палитры 16 777 216 цветов, а также установить путем ввода в текстовые поля интенсивностей базовых цветов в системе цветопередачи RGB или оттенка, контрастности и яркости в системе цветопередачи HSB.

Рис. 4.32. Диалоговое окно Цвет

Следующая страница Графические методы. Рисование текста

Cкачать материалы урока

Источник

Урок 21. Графика на форме. Объекты Graphics , Реn и Brush

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

Здравствуйте, дорогой читатель. В этом уроке мы начнем изучать графические методы языка программирования Visual Basic.Net, которые позволяют создавать рисунки на форме или элементах управления.

Графические методы языка программирования Visual Basic.Net существенно отличаются от графических операторов предшествующей версии Visual Basic 6. Теперь для создания рисунка вы должны непосредственно использовать графические службы GDI+, доступные через пространство имен System.Drawing.

На этом уроке вы узнаете, как создать объекты Graphics (Область рисования), Реn (Перо) и Brush (Кисть), необходимые для рисования.

Создание объектов Graphics , Реn и Brush

Прежде чем использовать графические методы класса System.Drawing.Graphics для рисования примитивных фигур, вы должны в вашем коде создать объекты Graphics (Область рисования), Реn (Перо) и Brush (Кисть).

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

Первый способ состоит в использовании метода CreateGraphics() формы или элемента управления, на котором надо отобразить графику. Например, создадим объект Graph1 типа Graphics, а затем укажем определенный элемент управления в качестве области рисования. Обычно в качестве области рисования выбирается размещенное на форме графическое поле (например, PictureBox1):

Второй способ используется для создания растрового изображения, которое можно сохранить как графический файл. Сначала необходимо объявить создание растрового изображения Image1 определенного размера, затем объявить создание объекта Graph1 типа Graphics из растрового изображения Image1 и, наконец, присвоить свойству Image формы или элемента управления (например, PictureBox1.Image)значение Image1.

Третий способ использует событие Paint формы или элемента управления, которое происходит при их создании или обновлении. В обработчике этого события одним из аргументов является e типа System.Windows.Forms.PaintEventArgs. В программном коде обработчика события можно объявить создание объекта Graph1 типа Graphics как свойства аргумента e.

Затем, если необходимо, можно установить новые значения цвета и ширины линии, например:

Объект Pen передается как один из аргументов в методы, которые не заполняют фигуру цветом, а рисуют контур фигуры.
Объект Brush(Кисть) определяет цвет и стиль закрашивания прямоугольников, окружностей и других замкнутых фигур.Сначала необходимо в разделе объявления переменных определить имя объекта (например, Brush1) и установить тип закраски и цвет (например, сплошная закраска синего цвета SolidBrush(Color.Blue)):

Если необходимо, можно будет поменять цвет закраски (например, на пурпурный):

Объект Brush передается как аргумент в методы, которые выполняют цветную заливку.

Объекты Pen, Brush и Graphics потребляют системные ресурсы. Поэтому, после окончания их использования, необходимо всегда вызывать Dispose()

Выбор цвета

Цвет устанавливается как значение свойства Color. Можно установить цвет с использованием нескольких десятков цветовых констант. Ниже приведены примеры установки зеленого цвета для объекта Pen1 (перо) и желтого цвета для объекта Brush1 (кисть).

Для установки цвета в 24-битовой палитре цветов RGB используется метод Color.FromArgb(Red, Green, Blue), аргументами которого являются три числа в диапазонах от 0 до 255 (интенсивность красного, зеленого и синего цветов). Например, так можно установить пурпурный цвет для кисти Brush1.

Читайте также:  Определите способом рядов диаметр молекулы увеличение 70000

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

После заполнения первой строки программного кода появится диалоговое окно Цвет. Вторая строка программного кода присваивает перу цвет, который можно выбрать в диалоговом окне Цвет с помощью мыши из палитры 48 основных цветов.

В этом уроке вы узнали, как создать объекты Graphics (Область рисования), Реn (Перо) и Brush (Кисть), необходимые для рисования, как выбрать цвет.

На следующем уроке мы познакомимся с графическими методами для рисования геометрических фигур.

Источник

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

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

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

Пространство имен System.Drawing (Рисование) обеспечивает доступ к функциональным возможностям графического интерфейса GDI+ , используя около 50 (!) классов, в том числе класс Graphics. Чуть позже мы будем использовать дополнительные пространства имен System.Drawing.Drawing2D, System.Drawing.Imaging, System.Drawing.Printing, System.Drawing.Text, расширяющие функциональные возможности библиотеки System.Drawing.

Класс 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);

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

Источник

Оцените статью
Разные способы