PictureBox изменить яркость и контрастность картинки - Visual Basic .NET
Формулировка задачи:
Элемент управления PicterBox как задать программно сохранение картинки с параметрами яркость, контрастность и другие характеристики при редактировании изображения? Спасибо.
Решение задачи: «PictureBox изменить яркость и контрастность картинки»
textual
Листинг программы
Imports System.Drawing.Imaging
Public Class Form2
Private bmp, bmp2 As Bitmap
Private rr, gg, bb, gm As Single
Private isLoad As Boolean
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
bmp = loadBitmap("tst3.jpg")
If bmp IsNot Nothing Then
bmp2 = bmp.Clone
PictureBox1.Image = bmp
PictureBox2.Image = bmp2
TrackBar1.Minimum = 0
TrackBar1.Maximum = 50
TrackBar1.Value = 10
TrackBar2.Minimum = 1
TrackBar2.Maximum = 50
TrackBar2.Value = 10
isLoad = True
End If
End Sub
Private Function loadBitmap(ByVal fileName As String) As Bitmap
If Not IO.File.Exists(fileName) Then Return Nothing
Using bm As Bitmap = New Bitmap(fileName)
Return New Bitmap(bm)
End Using
End Function
Private Sub TrackBar1_ValueChanged(sender As System.Object, e As System.EventArgs) Handles TrackBar1.ValueChanged
rr = TrackBar1.Value / 10
Label2.Text = rr.ToString
End Sub
Private Sub BrightnessGamma_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
PictureBox2.Image = colorProcessing(bmp2, rr, rr, rr, gm)
End Sub
Private Function colorProcessing(ByVal img As Bitmap, ByVal rr As Single, ByVal gg As Single, ByVal bb As Single, ByVal Gamma As Single) As Bitmap
Dim copy As Bitmap = New Bitmap(img.Width, img.Height)
Dim ia As ImageAttributes = New ImageAttributes
Dim myColorMatrix As New ColorMatrix
With myColorMatrix
.Matrix00 = rr
.Matrix11 = gg
.Matrix22 = bb
.Matrix33 = 1.0
.Matrix44 = 1.0
End With
ia.SetColorMatrix(myColorMatrix)
ia.SetGamma(Gamma)
Dim g As Graphics = Graphics.FromImage(copy)
g.DrawImage(img, New Rectangle(0, 0, img.Width, img.Height), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, ia)
g.Dispose()
Return copy
End Function
Private Sub TrackBar2_ValueChanged(sender As System.Object, e As System.EventArgs) Handles TrackBar2.ValueChanged
gm = TrackBar2.Value / 10
Label3.Text = gm.ToString
End Sub
End Class