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

Рисование пользовательских пунктирных линий

Интерфейс GDI+ предоставляет различные стили штриховых линий, входящие в перечисление DashStyle. Если эти стандартные стили штриховых линий не подходят, можно создать пользовательский шаблон штриховой линии.

Пример

Чтобы нарисовать пользовательскую штриховую линию, поместите длины штрихов и промежутков между ними в некоторый массив и присвойте его свойству DashPattern объекта Pen. В приведенном ниже примере рисуется пользовательская пунктирная линия на основе массива {5, 2, 15, 4}. Умножив элементы этого массива на толщину пера, равную 5, получаем массив {25, 10, 75, 20}. Получившиеся штрихи поочередно имеют длину 25 или 75, длина промежутков между ними поочередно равна 10 или 20.

Нарисованная штриховая линия показана на следующем рисунке. Обратите внимание, что последний штрих должен иметь длину, меньшую 25 единиц, чтобы конец линии располагался в точке (405, 5).

---------

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

Создайте форму Windows Forms и перейдите к обработчику события Paint этой формы. Вставьте приведенный выше код в обработчик события Paint.

How to: Draw a Line Filled with a Texture

Instead of drawing a line with a solid color, you can draw a line with a texture. To draw lines and curves with a texture, create a TextureBrush object, and pass that TextureBrush object to a Pen constructor. The bitmap associated with the texture brush is used to tile the plane (invisibly), and when the pen draws a line or curve, the stroke of the pen uncovers certain pixels of the tiled texture.

Example

The following example creates a Bitmap object from the file Texture1.jpg. That bitmap is used to construct a TextureBrush object, and the TextureBrush object is used to construct a Pen object. The call to DrawImage draws the bitmap with its upper-left corner at (0, 0). The call to DrawEllipse uses the Pen object to draw a textured ellipse.

The following illustration shows the bitmap and the textured ellipse.

Bitmap bitmap = new Bitmap("Texture1.jpg");

TextureBrush tBrush = new TextureBrush(bitmap);

Pen texturedPen = new Pen(tBrush, 30);

e.Graphics.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);

e.Graphics.DrawEllipse(texturedPen, 100, 20, 200, 100);

Compiling the Code

Create a Windows Form and handle the form's Paint event. Paste the preceding code into the Paint event handler. Replace Texture.jpg with an image valid on your system.

Рисование линии с текстурным заполнением

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

Пример

В следующем примере показано создание объекта Bitmap из файла Texture1.jpg. Это растровое изображение используется для создания объекта TextureBrush, а объект TextureBrush используется, в свою очередь, для создания объекта Pen. Вызов метода DrawImage формирует растровое изображение с верхним левым углом в точке (0, 0). Вызов DrawEllipse использует объект Pen, чтобы нарисовать текстурированный эллипс.

На следующем рисунке показаны растровое изображение и текстурированный эллипс.

-----