Метод ниже, берет цветовую матрицу и применяет ее к предоставленному изображению. Следует отметить несколько вещей:
(1) Это не функция
(2) Это же изображение используется для создания графического объекта и в качестве источника метода DrawImage.
Public Sub ApplyMatrixToImage(ByVal matrix As ColorMatrix, ByVal image As Image)
Using atts As New ImageAttributes
atts.SetColorMatrix(matrix)
Using g As Graphics = Graphics.FromImage(image)
Dim width As Integer = image.Width
Dim height As Integer = image.Height
Dim rect As New Rectangle(0, 0, width, height)
g.DrawImage(image, rect, 0, 0, width, height, GraphicsUnit.Pixel, atts)
End Using
End Using
End Sub
Я не знаю, является ли плохой практикой не создавать еще одно растровое изображение для визуализации конечного изображения, но странным является то, что метод отлично работает для регулировки цветового баланса (Matrix30, 31 и 32), но ничего не делает для регулировка непрозрачности (Matrix33).
Что происходит?