Rubrik: Grafik und Font · Bilder und Icons | VB-Versionen: VB.NET | 27.07.07 |
Bestimmte Farbwerte ersetzen (VB.NET) Mit dieser Funktion lässt sich ein bestimmter Farbwert eines Bildes durch eine andere Farbe ersetzen. | ||
Autor: Dieter Otter | Bewertung: | Views: 14.598 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Mit Hilfe der ColorMap-Klasse lässt sich ein bestimmter Farbwert eines Image-Objekts spielend einfach durch eine andere benutzerdefinierte Farbe ersetzen.
Public Function ReplaceColor(ByVal oBitmap As Image, _ ByVal OldColor As Color, _ ByVal NewColor As Color) As Image ' ColorMap mit Zuweisung der zu konvertierenden ' Farben(erstellen) Dim oMap(0) As ColorMap oMap(0) = New ColorMap With oMap(0) .OldColor = OldColor .NewColor = NewColor End With ' ImageAttributes-Objekt mit Farbanpassung erstellen Dim oAttr As New ImageAttributes oAttr.SetRemapTable(oMap) ' Neues Image-Objekt erstellen Dim imgWidth As Integer = oBitmap.Width Dim imgHeight As Integer = oBitmap.Height Dim oImage As Image = Image.FromHbitmap( _ New Bitmap(imgWidth, imgHeight).GetHbitmap) ' Bild unter Berücksichtigung des ImageAttributes-Objekts ' mit Farb-Konvertierung neu erstellen Using g As Graphics = Graphics.FromImage(oImage) g.DrawImage(oBitmap, New Rectangle(0, 0, imgWidth, imgHeight), _ 0, 0, imgWidth, imgHeight, GraphicsUnit.Pixel, oAttr) End Using ' neues Bild zurückgeben Return oImage End Function
Aufrufbeispiel:
' Bild in PictureBox anzeigen und die Farbe ' Magenta durch die Farbe Weiß ersetzen PictureBox1.Image = ReplaceColor(Image.FromFile("bild.gif"), _ Color.vbMagenta, Color.vbWhite)