ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
716
716
EMPFEHLEN
-
Hallo zusammen

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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
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!!
PS: Bitte eine ausführliche Erklärung, da ich erst seit zwei Monaten VB programmiere sind meine Kenntnisse noch beschrenkt
.
-
14.09.08 17:53 #2
- Registriert seit
- Apr 2005
- Beiträge
- 120
Hallo Nightking,
das Problem ist rein mathematischer Natur. Da es sich hier um eine Farbmatrix handelt, werden die einzelnen Farbwerte auf relativ kompliziertem Wege mit der Matrix multipliziert. Da der ursprüngliche Grünwert 0 beträgt, kann er per Multiplikation nicht verändert werden. Die Farbmatrix ist also dafür nicht geeignet (zumindest nicht, soweit mir bekannt ist).
Die Alternative wäre, den Grünwert über das BitmapData-Objekt von Hand einzutragen und das Bild anschließend wieder per Farbmatrix zu manipulieren.
Vielleicht kennt noch jemand eine Alternative?
Gruß
PhoenixLoe
-
15.09.08 09:44 #3
- Registriert seit
- Apr 2005
- Beiträge
- 120
Hallo Nightking,
ich habe nochmal darüber nachgedacht. Eigentlich ist es doch möglich, einen Null-Wert zu manipulieren, da es sich ja um eine 5x5-Matrix handelt. Das Stichwort lautet Verschiebungsmatrix. Eine Lösung Deines Problems wäre, zwei Matrizen zu verwenden. Die erste Matrix verschiebt den Grünwert oder einen entsprechenden anderen Wert auf die maximale Itensität, während die zweite Matrix diesen Wert wieder abdunkelt.
Hier mal ein Beispiel für eine Translationsmatrix:
Die Werte r, g, b und a werden entsprechend auf Deinen Farbwert aufaddiert.Code :1 2 3 4 5
1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 r g b a 1
Anschließend kannst Du wie gewohnt die Matrix zur Manipulation des Grünwertes verwenden.
OK, ich hoffe, dass das dieses Mal stimmt, was ich hier erzähle
.
Vielleicht suchst Du in der MSDN auch mal nach GDI+ und ColorMatrix. Da gab's glaub ich sogar einen Artikel über die Möglichkeiten der ColorMatrix.
Gruß
PhoenixLoe
-
Danke Ich schau es mir morgen mal an.
Sobald ichs gelöst hab schreib ichs hier rein
!
mfg NightkingGeändert von Nightking (18.09.08 um 16:12 Uhr)
Ähnliche Themen
-
BIld einfärben
Von nex_m im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 17.03.09, 18:16 -
Bild einfärben
Von kcyberbob im Forum PhotoshopAntworten: 2Letzter Beitrag: 21.10.08, 20:17 -
Bild in HKS-51k einfärben
Von eggrafx im Forum PhotoshopAntworten: 1Letzter Beitrag: 07.08.06, 14:48 -
Bild einfärben
Von AlexSchur im Forum PhotoshopAntworten: 3Letzter Beitrag: 19.05.05, 17:50 -
Bild einfärben
Von Dark_Fighter im Forum PhotoshopAntworten: 4Letzter Beitrag: 13.10.04, 00:51





Zitieren
Login





