gr.DrawRectangle(red, 40,20,20,20);
gr.DrawRectangle(green, 60,20,20,20);
Общий вид функций создания графических примитивов:
DrawRectangle(устройство вывода(класса Pen или Brush), х1,y1, x2, y2);
где х1,y1 – координаты верхнего левого угла, x2, y2 – координаты правого нижнего угла.
DrawLine(устройство вывода(класса Pen или Brush), х1,y1, x2, y2);
где х1,y1 – координаты начала линии, x2, y2 – координаты конца линии
DrawEllipse(устройство вывода(класса Pen или Brush),x, y, высота, ширина);
где х1,y1 – координаты центра.
DrawPie (устройство вывода(класса Pen или Brush),x, y, высота, ширина, начальный угол, насколько градусов повернуть почасовой стрелке);
Чтобы получить сектор изображенный на рисунке необходимо задать значение начального угла 180, значение насколько градусов повернуть – 90
DrawArc(устройство вывода(класса Pen или Brush),x, y, высота, ширина, начальный угол, насколько градусов повернуть почасовой стрелке);
DrawString(строка или строковая переменная, шрифт, кисть, x,y, [формат вывода текста]);
x, y - координаты верхнего левого угла текста
DrawPolygon (устройство вывода (класса Pen или Brush), массив точек типа Point [ ]);
Таблица 5.5.Свойства класса Реn
Свойство | Назначение |
Color | Определяет цвет создаваемых объектом Реn линий |
CustomStartCap, CustomEndCap | Позволяют получить или установить стиль «наконечника» пера, который будет показан в начале линии (StartCap) и в конце линии (EndCap) |
DashCap | Позволяет получить или установить стиль «наконечника» для перьев, рисующих пунктирные линии |
DashOffset | Устанавливает смещение начала пунктира относительно исходной точки пунктирной линии |
DashStyle | Позволяет получить или установить стиль для пунктирных линий, создаваемых при помощи данного объекта Реn |
LineJoin | Позволяет получить или установить стиль объединения при пересечении двух линий, выводимых данным объектом Реn |
Width | Позволяет получить или установить ширину данного пера |
Кроме класса Реn в GDI+ также можно использовать коллекцию заранее определенных перьев (коллекция Pens). При помощи статических свойств коллекции Pens можно мгновенно получить уже готовое перо, без необходимости создавать его вручную. Однако все типы Реn, которые создаются при помощи коллекции Pens, имеют одну и ту же одинаковую ширину, равную 1. Чтобы установить перо для вывода линий определенного стиля необходимо подключить в начале кода using System.Drawing.Drawing2D; затем создавая перо
Pen A.DashStyle = DashStyle. тип линии;
Таблица 5.6.Значения перечисления DashStyle
Значение | Перечисление |
Custom | Пользовательский стиль |
Dash | Штриховая линия |
DashDot | Штрихпунктирная линия |
DashDotDot | Штрихпунктирная линия: штрих — точка — точка — штрих |
Dot | Пунктир из одних точек |
Solid | Сплошная линия |
Для того чтобы проиллюстрировать приведенную выше информацию, создайте приложение вставьте в класс Form1 следующий текст программы.
public Form1() {
InitializeComponent();
this.Paint += new System. Windows. Forms. PaintEventHandler(Form1_Paint);
}
private void Form1_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
// Создаем большое перо синего цвета
Pen bluePen = new Pen(Color.Blue,20);
// Создаем еще одно перо при помощи заготовок из коллекции Pens
Pen pen2=Pens.Firebrick;
// Выводим при помощи созданных перьев геометрические фигуры
g.DrawEllipse(bluePen, 10, 10, 100, 100);
g.DrawLine(pen2, 10, 130, 110, 130);
g.DrawPie(Pens.Black, 150, 10, 120, 150, 0,90);
//Выводим многоугольник пурпурного цвета
Pen pen3=new Pen(Color.Purple, 5);
pen3.DashStyle = DashStyle.DashDot;
g.DrawPolygon(pen3, new Point[] { new Point (30, 140), new Point(265, 200),new Point(300, 225), new Point(190, 190),new Point(80, 330), new Point(20, 180)});
// Добавляем прямоугольник со вписанным текстом
Rectangle r = new Rectangle(150, 10, 230,60);
g.DrawRectangle(Pens.Blue,r);
g.DrawString("Геометрические фигуры",new Font("Arial", 12), Brushes.Black, r);
}
Вывод изображений
Тип System.Drawing.Image используется для вывода изображений. Класс Image определяет множество свойств и методов, которые можно использовать для настройки параметров выводимого изображения. К примеру, при помощи свойств Width, Height и Size можно получить или установить размеры изображения. Кроме того, в пространстве имен System. Drawing.Imaging определено множество типов для проведения сложных преобразований изображений.
Наиболее важные члены класса Image представлены в табл.7. Многие из этих членов являются статическими, а некоторые — абстрактными.
Таблица 5.7.Члены класса Image
Член | Назначение |
FromFile() | Этот статический метод предназначен для создания объекта Image из файла |
FromHbitmap() | Создает объект Bitmap на основе идентификатора окна (Window handle) |
FromStream() | Позволяет создать объект Image, используя в качестве источника поток данных |
Height Width Size Physical Dimensions Horizontal Dimensions Vertical Resolution | Все эти свойства предназначены для работы с размерами (измерениями) изображения |
GetBounds() | Возвращает прямоугольник, представляющий текущую область, занятую изображением |
Save() | Позволяет сохранить изображение в файл |
Класс Image является абстрактным, и создавать объекты этого класса нельзя. Обычно объявленные переменные Image присваиваются объектам класса Bitmap. Кроме того, можно создавать объекты класса Bitmap напрямую. Например, предположим, что необходимо вывести на форму три изображения. Можем объявить три переменные Image, а затем использовать для каждой из них объекты Вitmap:
private Image bMapImageA;
Вывод полученных изображений производится с помощью специального метода, который называется — DrawImage(). Этот метод многократно перегружен, поэтому есть множество вариантов того, как поместить изображение в нужное место на форме. Кроме того, для настройки параметров выводимого изображения можно использовать с этим методом значения перечислений ImageAttributes и GraphicsUnit. Координаты вывода изображения можно указать при помощи объектов Point, Rectangle, целочисленными значениями или значениями с плавающей запятой. Например:
private void Form1_Paint(Object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
// Используем объекты класса Bitmap
bMapImageA = new Bitmap("D:\\1.png");
// Выводим изображения при помощи Graphics.DrawImage()
g .DrawImage(bMapImageA, 10, 10)
}
Класс Bitmap позволяет выводить изображения, которые хранятся в файлах самого разного формата. Например:
// Тип Bitmap поддерживает все распространенные форматы!
Bitmap myBMP = new Bitmap(“CoffeeCup.bmp");
Bitmap myGIF = new Bitmap(“Candy.gif");
Bitmap ntyJPEG = new Bitmap(“Clock.jpg");
Bitmap myPNG = new Bitmap("Speakers.png");
// Выводим изображения при помощи Graphics.DrawImage()
g.DrawImage(myBmp, 10, 10);
g.DrawImage(myGIF, 220, 10);
g.DrawImage(myJPEG, 280, 10);
g.DrawImage(myPNG, 150, 200);