Vor Kurzem habe ich ein Programm geschrieben, in dem man unter anderem Bilder importieren konnte. Nun sieht es natürlich schöner aus, wenn man diese Bilder mit einer Kontur versieht. VB bietet dazu zwei Möglichkeiten:
Die erste Variante funktioniert klasse, wenn die Grafiken immer die selbe Höhe und Breite haben und sich somit exat in eine Picturebox skalieren lassen. Problematisch wird es aber dann, wenn die Seitenverhältnisse variieren, man das Bild aber nicht verzerren will, sprich die Seitenverhältnisse beibehalten möchte. Hier bietet es sich also an den Rahmen der Picturebox zu deaktivieren und selbst Hand anzulegen. Dazu habe ich folgende Funktion geschrieben: Public Function RahmenZeichnen(ByVal Grafik As Image) As Image Dim bmp As System.Drawing.Bitmap = Grafik Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer ' weißen Rahmen zeichnen For a = 0 To Grafik.Width - 1 bmp.SetPixel(a, 1, Color.White) bmp.SetPixel(a, Grafik.Height - 2, Color.White) Next a For b = 0 To Grafik.Height - 1 bmp.SetPixel(1, b, Color.White) bmp.SetPixel(Grafik.Width - 2, b, Color.White) Next b ' schwarzen Rahmen zeichnen For c = 0 To Grafik.Width - 1 bmp.SetPixel(c, 0, Color.Black) bmp.SetPixel(c, Grafik.Height - 1, Color.Black) Next c For d = 0 To Grafik.Height - 1 bmp.SetPixel(0, d, Color.Black) bmp.SetPixel(Grafik.Width - 1, d, Color.Black) Next d ' Grafik ausgeben Return bmp End Function Anwendungsbeispiel: RahmenZeichnen(PictureBox1.Image) PictureBox1.Refresh() Erweiterung des Tipps von Dieter Otter ''' <summary> ''' Zeichnet einen schwarz/weißen Rahmen um ein Image-Objekt ''' </summary> ''' <param name="Grafik">Originalgrafik</param> ''' <returns>Neues Image-Objekt mit Rahmen</returns> Public Function RahmenZeichnen(ByVal Grafik As Image) As Image ' Standardfarben weiß und schwarz verwenden Return RahmenZeichnen(Grafik, Color.White, Color.Black) End Function ''' <summary> ''' Zeichnet einen Rahmen in den angegebenen Farben um ein Image-Objekt ''' </summary> ''' <param name="Grafik">Originalgrafik</param> ''' <param name="innerColor">innere Rahmenfarbe</param> ''' <param name="outerColor">äußere Rahmenfarbe</param> ''' <returns>Neues Image-Objekt mit Rahmen</returns> Public Function RahmenZeichnen(ByVal Grafik As Image, _ ByVal innerColor As Color, _ ByVal outerColor As Color) As Image ' Neus Bitmap-Objekt aus übergebener Grafik Dim bmp As New System.Drawing.Bitmap(Grafik) Using g As Graphics = Graphics.FromImage(bmp) ' weißen Rahmen zeichnen Dim r As New Rectangle(1, 1, Grafik.Width - 3, Grafik.Height - 3) g.DrawRectangle(New Pen(innerColor), r) ' schwarzen Rahmen zeichnen r = New Rectangle(0, 0, Grafik.Width - 1, Grafik.Height - 1) g.DrawRectangle(New Pen(outerColor), r) End Using ' neue Grafik zurückgeben Return bmp End Function Obige Funktionen verändert nicht das Originalbild, sondern erstellen ein neues Image-Objekt mit Rahmen. Anwendungsbeispiel: ' Standard-Rahmenfarbe schwarz/weiß PictureBox1.Image = RahmenZeichnen(PictureBox1.Image) ' benutzerdefinierte Farben für den Rahmen verwenden PictureBox1.Image = RahmenZeichnen(PictureBox1.Image, Color.White, Color.Red) Dieser Tipp wurde bereits 15.051 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |