| netlib.narod.ru | < Назад | Оглавление | Далее > |
Для рисования одиночных прямых служит метод DrawLine класса Graphics. Есть четыре перегруженных версии DrawLine, но все они требуют один и тот же набор аргументов: координаты начальной и конечной точек линии, а также перо, которым она рисуется:
Методы DrawLine класса Graphics
| void DrawLine(Pen pen, int x1, int y1, int x2, int y2) |
| void DrawLine(Pen pen, float x1, float y1, float x2, float y2) |
| void DrawLine(Pen pen, Point point1, Point point2) |
| void DrawLine(Pen pen, PointF point1, PointF point2) |
Можно указывать координаты как четырьмя значениями типа int или float, так и парой структур Point или PointF.
Метод DrawLine чертит линию от первой точки до второй, включая вторую точку в состав линии (этим он несколько отличается от Win32 GDI, который проводит линию между двумя точками, не включая конечную точку в состав линии). Вот пример:
grfx.DrawLine(pen, 0, 0, 5, 5);
Эта команда закрашивает черным цветом 6 пикселов с координатами (0, 0), (1, 1), (2, 2), (3, 3), (4, 4) и (5, 5). Порядок указания начальной и конечной точек линии не имеет значения, поэтому вызов:
grfx.DrawLine(pen, 5, 5, 0, 0);
даст тот же результат. Вызов:
grfx.DrawLine(pen, 2, 2, 3, 3);
рисует 2 пиксела с координатами (2, 2) и (3, 3). Однако вызов:
grfx.DrawLine(pen, 3, 3, 3, 3);
не рисует ничего.
Как вам известно, определить ширину и высоту клиентской области позволяет свойство ClientSize формы. Число пикселов по горизонтали определяется значением ClientSize.Width; пикселы могут нумероваться от 0 до ClientSize.Width - 1. Аналогично пикселы клиентской области по вертикали нумеруются от 0 до ClientSize.Height - 1.
Программа XMarksTheSpot рисует крестик в клиентской области.
XMarksTheSpot.cs
//-----------------------------------------------
// XMarksTheSpot.cs (C) 2001 by Charles Petzold
//-----------------------------------------------
using System;
using System.Drawing;
using System.Windows.Forms;
class XMarksTheSpot: Form
{
public static void Main()
{
Application.Run(new XMarksTheSpot());
}
public XMarksTheSpot()
{
Text = "X Marks The Spot";
BackColor = SystemColors.Window;
ForeColor = SystemColors.WindowText;
ResizeRedraw = true;
}
protected override void OnPaint(PaintEventArgs pea)
{
Graphics grfx = pea.Graphics;
Pen pen = new Pen(ForeColor);
grfx.DrawLine(pen, 0, 0,
ClientSize.Width - 1, ClientSize.Height - 1);
grfx.DrawLine(pen, 0, ClientSize.Height - 1,
ClientSize.Width - 1, 0);
}
}
Первый вызов DrawLine рисует линию от верхнего левого до нижнего правого пиксела клиентской области. Второй вызов DrawLine ведет линию из нижнего левого пиксела с координатами (0, ClientSize.Height – 1) и доводит ее до верхнего правого пиксела с координатами (ClientSize.Width – 1, 0).
| netlib.narod.ru | < Назад | Оглавление | Далее > |