Nightking
Grünschnabel
Hallo zusammen ![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Ich habe ein Problem beim einfärben eines Bildes, und zwar, wenn ich ein Bild einfärbe zB rot,sprich, ich entferne den Grün- und Blauanteil des Bildes und füge ich den Grünanteil wieder hinzu wird es Gelb. Soweit korrekt, nur wenn ich das Bild, rot eingefärbt, übernehme und den Grünanteil im nachhinein hinzufügen möchte ändert sich das Bild nicht mehr. Theoretisch müsste es ja Gelb werden
Ablauf:
Der Benutzer öffnet ein Bild und dieses wird in eine Picturebox geladen. Neben der Picturebox hat es drei Trackbars (RGB) mit dennen man den Farbanteil regeln kann.
Hat jemand eine Idee wie ich dies realisieren könnte? Ich hab echt nichts brauchbares gefunden. bzw nichts was mir weiterhelfen konnte.
Wer mehr Infos braucht, einfach melden!!![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
PS: Bitte eine ausführliche Erklärung, da ich erst seit zwei Monaten VB programmiere sind meine Kenntnisse noch beschrenkt
.
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Ich habe ein Problem beim einfärben eines Bildes, und zwar, wenn ich ein Bild einfärbe zB rot,sprich, ich entferne den Grün- und Blauanteil des Bildes und füge ich den Grünanteil wieder hinzu wird es Gelb. Soweit korrekt, nur wenn ich das Bild, rot eingefärbt, übernehme und den Grünanteil im nachhinein hinzufügen möchte ändert sich das Bild nicht mehr. Theoretisch müsste es ja Gelb werden
Ablauf:
Der Benutzer öffnet ein Bild und dieses wird in eine Picturebox geladen. Neben der Picturebox hat es drei Trackbars (RGB) mit dennen man den Farbanteil regeln kann.
Code:
Sub farbdef()
Dim image As Image = Me.PictureBox1.Image
Dim imageAttributes As New ImageAttributes()
Dim width As Integer = image.Width
Dim height As Integer = image.Height
Dim colorMatrixElements As Single()() = { _
New Single() {Me.TrackBar_red.Value / 100, 0, 0, 0, 0}, _
New Single() {0, Me.TrackBar_green.Value / 100, 0, 0, 0}, _
New Single() {0, 0, Me.TrackBar_blue.Value / 100, 0, 0}, _
New Single() {0, 0, 0, Me.TrackBar_Alpha.Value / 100, 0}, _
New Single() {0, 0, 0, 0, 1}}
Dim colorMatrix As New ColorMatrix(colorMatrixElements)
imageAttributes.SetColorMatrix( _
colorMatrix, _
ColorMatrixFlag.Default, _
ColorAdjustType.Default)
'Neue 32bit Bitmap erstellen
Dim NewBitmap = New Bitmap(image)
'Resolution (DPI) vom Quellbitmap auf Zielbitmap übertragen
'NewBitmap.SetResolution(Bild.HorizontalResolution, Bild.VerticalResolution)
'Graphicsobjekt von NewBitmap erstellen
Dim NewGraphics As Graphics = Graphics.FromImage(NewBitmap)
'NewBitmap auf NewGraphics zeichnen
NewGraphics.DrawImage(image, New Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel, _
imageAttributes)
'Ressource freigeben
NewGraphics.Dispose()
imageAttributes.Dispose()
farbpic = NewBitmap
Me.PictureBox1.Image = farbpic
Me.PictureBox1.Refresh()
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar_Red.Scroll
Bildfarbe()
End Sub
Hat jemand eine Idee wie ich dies realisieren könnte? Ich hab echt nichts brauchbares gefunden. bzw nichts was mir weiterhelfen konnte.
Wer mehr Infos braucht, einfach melden!!
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
PS: Bitte eine ausführliche Erklärung, da ich erst seit zwei Monaten VB programmiere sind meine Kenntnisse noch beschrenkt
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)