Практическое руководство. Рисование непрозрачными и полупрозрачными кистями
Обновлен: Ноябрь 2007
Для заливки фигуры необходимо передать объект Brush одному из методов заливки класса Graphics. Единственным параметром конструктора SolidBrush является объект Color. Чтобы осуществить непрозрачную заливку фигуры, следует установить альфа-компонент цвета равным 255. Чтобы сделать полупрозрачную заливку фигуры, установите для альфа-компонента любое значение из диапазона от 1 до 254.
Когда осуществляется полупрозрачная заливка фигуры, ее цвет смешивается с цветами фона. Альфа-компонент определяет результат смешивания цветов фигуры и фона; при значениях альфа близких к 0 цвета фона выделяются в большей степени, при значениях альфа близких к 255 в большей степени выделяется цвет фигуры.
Пример
В приведенном ниже примере рисуется растровое изображение, а затем осуществляется заливка трех эллипсов, частично покрывающих точечное изображение. Цвет заливки первого эллипса имеет альфа-компонент, равный 255, поэтому он является непрозрачным. При заливке второго и третьего эллипсов используется альфа-компонент, равный 128, поэтому эти эллипсы являются полупрозрачными; сквозь них можно видеть фоновое изображение. Вызов, устанавливающий значение свойства CompositingQuality, указывает, что смешивание цветов для третьей линии должно совмещаться с гамма-коррекцией.
На следующем рисунке показан результат выполнения приведенного ниже кода.
Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height)
Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))
e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)
e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)
Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height);
SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));
e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);
e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);
Компиляция кода
Предыдущий пример предназначен для работы с Windows Forms, для него необходим объект PaintEventArgse, передаваемый в качестве параметра обработчику событий PaintEventHandler.
См. также
Задачи
Практическое руководство. Установка степени прозрачности фона элемента управления
Практическое руководство. Рисование непрозрачных и полупрозрачных линий
Практическое руководство. Создание прозрачных форм Windows Forms