Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Graphics.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
3.1 Mб
Скачать

Рисование прямоугольников с помощью пера

Чтобы нарисовать прямоугольник, нужно создать два объекта: объект Graphics и объект Pen. У объекта Graphics имеется метод DrawLine, а объект Pen предназначен для хранения таких параметров рисуемой линии, как ее ширина и цвет.

Пример

В следующем примере рисуется прямоугольник с верхним левым углом в точке (10, 10). Ширина прямоугольника равна 100, а высота равна 50. Второй параметр, передаваемый конструктору Pen, указывает, что толщина пера составляет 5 точек.

При рисовании прямоугольника перо располагается по центру границы данного прямоугольника. Поскольку толщина пера равна 5, стороны прямоугольника рисуются шириной в 5 точек: 1 точка рисуется по самой границе, 2 точки рисуются внутри прямоугольника, и 2 точки — снаружи.

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

--

Компиляция кода

Предыдущий пример предназначен для работы с Windows Forms, для него необходим объект PaintEventArgs e, передаваемый в качестве параметра обработчику события Paint.

How to: Set Pen Width and Alignment

When you create a Pen, you can supply the pen width as one of the arguments to the constructor. You can also change the pen width with the Width property of the Pen class.

A theoretical line has a width of 0. When you draw a line that is 1 pixel wide, the pixels are centered on the theoretical line. If you draw a line that is more than one pixel wide, the pixels are either centered on the theoretical line or appear to one side of the theoretical line. You can set the pen alignment property of a Pen to determine how the pixels drawn with that pen will be positioned relative to theoretical lines.

The values Center, Outset, and Inset that appear in the following code examples are members of the PenAlignment enumeration.

The following code example draws a line twice: once with a black pen of width 1 and once with a green pen of width 10.

To vary the width of a pen

  • Set the value of the Alignment property to Center (the default) to specify that pixels drawn with the green pen will be centered on the theoretical line. The following illustration shows the resulting line.

The following code example draws a rectangle twice: once with a black pen of width 1 and once with a green pen of width 10.

Pen blackPen = new Pen(Color.FromArgb(255, 0, 0, 0), 1);

Pen greenPen = new Pen(Color.FromArgb(255, 0, 255, 0), 10);

greenPen.Alignment = PenAlignment.Center;

// Draw the line with the wide green pen.

e.Graphics.DrawLine(greenPen, 10, 100, 100, 50);

// Draw the line with the thin black pen.

e.Graphics.DrawLine(blackPen, 10, 100, 100, 50);

Задание толщины и выравнивания пера

При создании объекта Pen можно указать толщину пера в качестве одного из параметров конструктора. Можно также изменять толщину пера с помощью свойства Width класса Pen.

Абстрактная линия имеет нулевую толщину. При рисовании линии толщиной в одну точку точки центрируются по абстрактной линии. Если толщина рисуемой линии больше одной точки, то точки либо центрируются по абстрактной линии, либо располагаются по одну сторону от этой линии. Для указания того, как следует располагать точки, рисуемые некоторым пером, относительно абстрактной линии, служит свойство выравнивания соответствующего объекта Pen.

Значения Center, Outset и Inset, которые используются в приведенном ниже примере кода, являются членами перечисления PenAlignment.

В следующем примере кода дважды выполняется рисование линии. В первый раз линия рисуется черным пером толщиной 1, а во второй — зеленым пером толщиной 10.