logo search
CSharp_Graphics

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

При рисовании линии необходимо передать методу DrawLine класса Graphics объект Pen. Одним из параметров конструктора Pen является объект Color. Чтобы нарисовать непрозрачную линию, следует установить альфа-компонент цвета, равным 255. Чтобы нарисовать полупрозрачную линию, установите для альфа-компонента любое значение из диапазона от 1 до 254.

При рисовании полупрозрачной линии на некотором фоне цвет линии смешивается с цветами фона. Альфа-компонент определяет результат смешивания цветов линии и фона; при значениях альфа близких к 0 цвета фона выделяются в большей степени, при значениях альфа близких к 255 в большей степени выделяется цвет линии.

Example

The following example draws a bitmap and then draws three lines that use the bitmap as a background. The first line uses an alpha component of 255, so it is opaque. The second and third lines use an alpha component of 128, so they are semitransparent; you can see the background image through the lines. The statement that sets the CompositingQuality property causes the blending for the third line to be done in conjunction with gamma correction.

The following illustration shows the output of the following code.

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

e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height);

Pen opaquePen = new Pen(Color.FromArgb(255, 0, 0, 255), 15);

Pen semiTransPen = new Pen(Color.FromArgb(128, 0, 0, 255), 15);

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20);

e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;

e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60);

Compiling the Code

The preceding example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler.

Пример

В приведенном ниже примере рисуется растровое изображение, а затем рисуются три линии, использующие точечное изображение в качестве фона. Цвет первой линии имеет альфа-компонент, равный 255, поэтому она является непрозрачной. При рисовании второй и третьей линий используется альфа-компонент, равный 128, поэтому они являются полупрозрачными; сквозь эти линии можно видеть фоновое изображение. Оператор, устанавливающий значение свойства CompositingQuality, указывает, что смешивание цветов для третьей линии должно совмещаться с гамма-коррекцией.

На следующем рисунке показан результат выполнения следующего кода.

-------