.NET 4.x Как изменить цвет пикселей во всем изображении? - Visual Basic .NET
Формулировка задачи:
Всем знатокам доброго времени суток!
Вопрос, собственно, в заголовке. Условие задачи: Есть какое-то изображение. Требуется. 1) пройти по всем пикселям изображения, получить текущие значение цвета каждого пикселя 2) Изменить цвет указанных пикселей Спасибо за помощь и понимание.Решение задачи: «.NET 4.x Как изменить цвет пикселей во всем изображении?»
textual
Листинг программы
Imports System.Drawing.Imaging
Imports System.IO
Public Class Form6
Private src, bmp As Bitmap
Private Sub Form6_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
bmp = New Bitmap(Path.Combine(Application.StartupPath, "clr1.jpg"))
PictureBox1.Image = bmp
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
src = bmp.Clone
toBW(TrackBar1.Value / 100)
PictureBox2.Image = src
End Sub
Private Sub toBW(ByVal th As Single)
Using gr As Graphics = Graphics.FromImage(src)
Dim gray_matrix As Single()() = {
New Single() {0.299F, 0.299F, 0.299F, 0, 0},
New Single() {0.587F, 0.587F, 0.587F, 0, 0},
New Single() {0.114F, 0.114F, 0.114F, 0, 0},
New Single() {0, 0, 0, 1, 0},
New Single() {0, 0, 0, 0, 1}
}
Dim ia As New System.Drawing.Imaging.ImageAttributes
ia.SetColorMatrix(New System.Drawing.Imaging.ColorMatrix(gray_matrix))
ia.SetThreshold(th)
Dim rc As New Rectangle(0, 0, src.Width, src.Height)
gr.DrawImage(src, rc, 0, 0, src.Width, src.Height, GraphicsUnit.Pixel, ia)
End Using
End Sub
End Class