Программирование >>  Программирование с использованием ajax 

1 ... 340 341 342 [ 343 ] 344 345 346 ... 396


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

us ing Sys tem. Drawing. Dr awing2D;

3. В тело кода объекта Forml введите следующий код:

protected override void OnPaint (PaintEventArgs e) {

GraphicsPath path;

path = new GraphicsPath(new Point []{ new Point(10, 10),

new Point (150, 10), new Point (200, 150), new Point (10, 150), new Point (200, 160) }, new byte[] { (byte)PathPointType.Start, (byte)PathPointType.Line, (byte)PathPointType.Line, (byte)PathPointType.Line, (byte)PathPointType.Line }); e.Graphics.DrawPath(Pens.Black, path);

4. Запустите приложение. Результирующий путь должен выглядеть, как показано на рис. 33.7.


Рис, 33.7. Результирующий путь

Описание полученных результатов

Код создания этого пути достаточно сложен. Конструктор объекта GraphicsPath принимает два аргумента. Первый аргумент - массив Point. В данном случае мы используем синтаксис С# для объявления и инициализации массива в одном и том же месте и создания нового объекта Point по мере перемещения:

new Point [ ] {

new Point (10, 10), new Point (150, 10), new Point (200, 150) , new Point (10, 150), new Point(200, 160)



Второй аргумент - массив байтов, который также создается в нужном месте:

new byte[]{

(byte)PathPointType.Start, (byte)PathPointType.Line, (byte)PathPointType.Line, (byte)PathPointType.Line, (byte)PathPointType.Line

И, наконец, мы вызываем метод DrawPath (): е.Graphics.DrawPath(Pens.Black, path);

Области

Класс Region (область) - сложная графическая форма, состоящая из прямоугольников и путей. После создания объекта Region эту область можно нарисовать, используя метод FillRegionO. В следующем практическом занятии мы создадим объект Region и нарисуем его в окне.

Создание области

Следующий код создает область и добавляет в нее объекты Rectangle и GraphicsPath, а затем закрашивает эту область синим цветом.

1. Создайте новое Windows-приложение по имени DrawingRegions в каталоге С:\BegVCSharp\Chapter33.

2. В начальную часть кода добавьте следующую директиву using для System. Drawing.Drawing2D:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System. Drawing. Drawing2D;

3. В тело Forml поместите следующий код:

protected override void OnPaint (PaintEventArgs e) {

Rectangle rl = new Rectangle (10, 10, 50, 50); Rectangle r2 = new Rectangle (40, 40, 50, 50); Region r = new Region(rl); r.Union(r2);

GraphicsPath path = new GraphicsPath(new Point[] {

new Point (45, 45) ,

new Point (145, 55),

new Point (200, 150),

new Point (75, 150),

new Point (45, 45)

}, new byte [ ] {

(byte)PathPointType.Start, (byte)PathPointType.Bezier,



(byte)PathPointType.Bezier, (byte)PathPointType.Bezier, (byte)PathPointType.Line

r.Union(path);

e.Graphics.FillRegion(Brushes.Blue, r) ;

4. Если теперь запустить этот код, результат должен быть подобен показанному на рис. 33.8.


Рис. 33.8. Pucoeanu£ области

Описание полученных результатов

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

Конструирование областей состоит из конструирования прямоугольников и путей до того, как будет вызван метод Union (). Если бы требовалось использовать пересечение прямоугольника и пути, вместо метода Union () можно было бы применить метод Intersection().

Для общего ознакомления с GDI+ дополнительная информация о путях и областях не требуется, поэтому мы не будем их рассматривать более подробно.

Цвета

Многие операции рисования в среде GDI+ требуют указания цвета. При рисовании линии или прямоугольника необходимо задать нужный цвет.

В интерфейсе GDI+ цвета инкапсулированы в структуре Color. Цвет можно создать, передавая функции структуры Color значения красного, зеленого и синего компонентов, но это почти никогда не требуется. Структура Color содержит около 150 свойств, которые позволяют получать широкое множество заранее определенных цветов. Забудьте о красном, зеленом, синем, желтом и черном цветах - если нужно выполнить рисование цветом LightGoldenrodYellow или LavenderBlush, для этого существует заранее определенный цвет. Объявление переменной типа Color и ее инициализация цветом из структуры Color выполняется следующим образом:

Color redColor = Color.Red;

Color anotherColor = Color.LightGoldenrodYellow;

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

Еще один способ представления цвета - разбиение его на три компонента: оттенок, насыщенность и яркость. Структура Color содержит вспомогательные методы для выполнения этой задачи, а именно - GetHue (), GetSaturation () и GetBrightness ().



1 ... 340 341 342 [ 343 ] 344 345 346 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика