Как регулировать прозрачность изображения в C#

Пример Используйте Объект ImageAttributes для регулировки яркости изображения в 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. См. предыдущее сообщение для получения дополнительной информации о том, как работает часть чертежа.

Источник: http://csharphelper.com/blog/2016/12/adjust-image-translucency-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector