Как регулировать прозрачность изображения в C#
Пример использует объект ColorMatrix для масштабирования красных, зеленых и синих цветовых компонентов пикселей изображения. Вы можете использовать подобную технику для масштабирования компонентов альфа (прозрачности) пикселей. Например, если альфа-значение пикселя 255 (полностью непрозрачное) и вы масштабируете его в 0,5 раза, результатом будет пиксель с альфа = 128 (наполовину прозрачный).
Следующий AdjustAlpha метод масштабирует альфа-значения изображения.
// Отрегулируйте прозрачность изображения.
private Bitmap AdjustAlpha(Image image, float translucency)
{
// Создаем ColorMatrix.
float t = translucency;
ColorMatrix cm = new ColorMatrix(new float[][]
{
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, t, 0},
new float[] {0, 0, 0, 0, 1},
});
ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(cm);
// Нарисуем изображение на новом растровом изображении
// применение новой ColorMatrix.
Point[] points =
{
new Point(0, 0),
new Point(image.Width, 0),
new Point(0, image.Height),
};
Rectangle rect =
new Rectangle(0, 0, image.Width, image.Height);
// Создаем растровое изображение результата.
Bitmap bm = new Bitmap(image.Width, image.Height);
using (Graphics gr = Graphics.FromImage(bm))
{
gr.DrawImage(image, points, rect,
GraphicsUnit.Pixel, attributes);
}
// Вернуть результат.
return bm;
}
Ключом является ColorMatrix. Он похож на идентифицирующую матрицу, кроме записи, которая масштабирует альфа-компоненты пикселей, задается масштабным коэффициентом t. См. для получения дополнительной информации о том, как работает часть чертежа.

