Hallo,
ich nutze VB.Net und stosse dabei auf folgendes Problem!
Ich habe eine Picturebox, wo ich ein Bild lade und anzeige. Diese Picturebox nennen wir mal PicBild. Nun möchte ich das das Bild auf Befehl invertiert wird. Dazu verwende ich folgende Routine
Private Sub InvertPicture(ByVal Pic As PictureBox, ByVal CM As Imaging.ColorMatrix)
Dim Bmp As New Bitmap(Pic.Image.Width, Pic.Image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
Bmp.SetResolution(Pic.Image.HorizontalResolution, Pic.Image.VerticalResolution)
Dim G As Graphics = Graphics.FromImage(Bmp)
Dim ImgAttr As New Imaging.ImageAttributes
ImgAttr.SetColorMatrix(CM, Imaging.ColorMatrixFlag.Default, Imaging.ColorAdjustType.Bitmap)
G.DrawImage(Pic.Image, New Rectangle(0, 0, Pic.Image.Width, Pic.Image.Height), 0, 0, Bmp.Width, Bmp.Height, GraphicsUnit.Pixel, ImgAttr)
G.Dispose()
ImgAttr.Dispose()
PictureBox1.Image = Bmp
End Sub
Aufrufen tue ich die Routine mittels
Dim cm As Imaging.ColorMatrix = New Imaging.ColorMatrix(New Single()() {New Single() {-1.0F, 0.0F, 0.0F, 0.0F, 0.0F}, New Single() {0.0F, -1.0F, 0.0F, 0.0F, 0.0F}, New Single() {0.0F, 0.0F, -1.0F, 0.0F, 0.0F}, New Single() {0.0F, 0.0F, 0.0F, 1.0F, 0.0F}, New Single() {0.0F, 0.0F, 0.0F, 0.0F, 1.0F}})
InvertPicture(picBild, cm)
zu Testzwecken soll das invertierte Bild in eine andere Picturebox geschrieben werden. Das Resultat ist aber nun, das dieses Bild schwarz bleibt! Ändere ich die Werte für die ColorMatrix, so ändert sich das Bild auch entsprechend. Also Graustufen etc. Nur beim invertieren klappt das nicht
Eine sehr langwierige Recherche im Internet brachte mich auf folgende Seite.
http://www.bobpowell.net/negativeimage.htm
Da mein Englisch nicht so toll ist, hatte ich da einige Probleme.
Aber soweit ich es verstanden habe, gibt es einen Bug in der Colormatrix. Diesen könnte man beheben, wenn man erst auf das Bild folgende Matrix anwendet.
Matrix00=0.99f
Matrix11=0.99f
Matrix22=0.99f
Matrix33=1
Matrix44=1
Matrix40=.04f
Matrix41=.04f
Matrix42=.04f
Also habe ich folgendes probiert. Auf das Bild die oben genannte Matrix angewendet und gleich danach die Matrix für das invertieren des Bildes angewendet. Das Resultat ist jedoch, das das Bild auch schwarz bleibt.
Hat jemand noch eine Idee woran das liegen kann?
Habe ich den Inhalt auf der oben genannten Seite vielleicht falsch verstanden?
MfG Alex