Метод FromImage
Graphics
из заданного объекта Image
. При помощи этого метода можно изменять существующее изображение или создавать новое изображение. Причем обработанное изображение можно потом сохранить в графическом файле. Использование метода иллюстрирует код, приведенный в листинге 6.10.Bitmap bmp = new Bitmap(150, 90);
Graphics g = Graphics.FromImage(bmp);
Метод OnPaint
Form
получает в качестве параметра объект PaintEventArgs
. Одним из членов данного объекта является объект Graphics
, связанный с формой. Переопределяя метод OnPaint
класса Form
, можно получить доступ к объекту Graphics
из параметра PaintEventArgs
, после чего можно работать с графикой в клиентской области формы. Вызов этого метода показан в листинге 6.11.Protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
}
Получив любым из перечисленных способов доступ к объекту Graphics
Метод DrawImage
Image
в указанной позиции экрана. Всего существует четыре перегруженные версии метода. Но в самой простой его версии достаточно указать координаты выводимой картинки, как показано в листинге 6.12.g.DrawImage(myImage, 10, 10);
С помощью метода DrawImage
GraphicsUnit.Pixel
, которое позволяет указывать единицы измерения.Bitmap myBMP = new Bitmap(@"\windows\banner.gif");
Rectangle portion = new Rectangle(1, 1, 150, 25);
g.DrawImage(myBMP, 20, 220, portion, GraphicsUnit.Pixel);
Метод FillRectangle
DrawRectangle
использует перо вместо кисти, поэтому на экран выводится незакрашенный прямоугольник.Чтобы нарисовать достаточно сложную фигуру, можно задать массив точек и соединить их прямыми отрезками, после чего можно закрасить получившуюся фигуру. Для этого разработчик может использовать методы DrawPolygon
FillPolygon
. В листинге 6.14 приведен код, который позволяет нарисовать простой ромб по указанным точкам.// Нарисуем ромб
// Зададим массив точек
Point[] arrPoint = {
new Point(150, 50),
new Point(200, 100),
new Point(150, 150),
new Point(100, 100),
new Point(150, 50),
};
g.DrawPolygon(bluePen, arrPoint);
Если все рассмотренные ранее методы объединить в одно приложение и затем запустить его, то на экране устройства будет отображено несколько графических образов, как показано на рис. 6.1.
Рис. 6.1
. Основные приемы работы с графикойСоздание собственных методов DrawPie и FillPie
В данный момент .NET Compact Framework не поддерживает графические методы DrawPiе
FillPie
, которые позволяли бы рисовать круговые секторы. Но можно создать свою версию этих методов, используя математические вычисления, как показано в листинге 6.15.///
///Рисуем закрашенный сектор
///Параметры функции
///g - Объект Graphics
///solidBrush - Кисть для закраски сегмента
///x,y - Координаты центра
///width - Ширина сегмента
///height - Высота сегмента
///startAngle - Значение начального угла
///endAngle - Значение конечного угла
///
private void FillPie(Graphics g, SolidBrush solidBrush, int x, int y,
int width, int height, double startAngle, double endAngle) {
double[] xAngle = new double[12];
double[] yAngle = new double[12];
double angleIncrement = (endAngle - startAngle) / 10;
double angle = startAngle;