Hallo,
Chrisber brachte mich in diesem Post auf die Idee, diese Library zu entwickeln.
Wieso nutzen?
Die Methoden SetPixel und GetPixel entsprechen nicht der normalen Methode aus der Bitmap-Klasse, sondern basieren auf Marshaling. Sie sind um ein vielfaches schneller, so braucht die SetPixel-Methode aus dieser Library 1,379 Sekunden um ein Bild in einer Auflösung von 3888 x 2592 pixelweise zu bearbeiten, während die aus der Bitmap-Klasse 14,2468 Sekunden benötigt, d.h. die Methode aus dieser Library ist bis zu 10 mal so schnell. Die anderen Methoden (FindPixel, FindPixelPercent, FindAndSetPixel und FindAndSetPixelPercent) arbeiten ebenso effizient und ersparen einiges an Schreibarbeit.
Benchmark
(Bitmap-Klasse: 29,6059205848788 Sekunden
FastBitmap-Klasse: 3,65744249618137 Sekunden)
Framework-Version
Die Klassenbibliothek basiert auf dem .NET Framework 2.
Mergen
Ja, mit Verweis.
Download
Hier (ZIP, 6 Kb)
Changelog
1.0.0.1 - Bugfix
1.0.0.2 - Implementierung von Übergabe der Varianz als Prozentwert
1.0.0.3 - Implementierung einer Funktion zum direkten Kopieren eines Bildschirmbereichs
1.0.0.4 - Nutzung der Library vereinfacht.
1.0.0.5 - wichtiger Bugfix
Beispiel
LG
Chrisber brachte mich in diesem Post auf die Idee, diese Library zu entwickeln.
- Public Sub SetPixel(ByVal x As Integer, ByVal y As Integer, ByVal cl As Color)
Legt die Farbe des Pixels fest, der sich an der übergebenen Position befindet. - Public Function GetPixel(ByVal x As Integer, ByVal y As Integer) As Color
Liest die Farbe des Pixels aus, der sich an der übergebenen Position befindet, und gibt diese zurück.
- Public Function FindPixel(ByVal r As Byte, ByVal g As Byte, ByVal b As Byte, Optional ByVal varianz As Byte = 0) As Point()
Gibt die Position aller Pixel im Bitmap-Objekt zurück, die unter Berücksichtigung der übergebenen Varianz der Farbe entsprechen. - Public Function FindPixelPercent(ByVal r As Byte, ByVal g As Byte, ByVal b As Byte, Optional ByVal varianzprozent As Integer = 0) As Point()
Gibt die Position aller Pixel im Bitmap Objekt zurück, die unter Berücksichtigung des übergebenen Varianz-Prozentwertes der Farbe entsprechen.
- Public Sub FindAndSetPixel(ByVal r As Byte, ByVal g As Byte, ByVal b As Byte, ByVal newcolor As Color, Optional ByVal varianz As Byte = 0)
Liest alle Pixel im Bitmap-Objekt aus, die unter Berücksichtigung der übergebenen Varianz der Farbe entsprechen, und legt die Farbe dieser auf die übergebene Farbe fest. - Public Sub FindAndSetPixelPercent(ByVal r As Byte, ByVal g As Byte, ByVal b As Byte, ByVal newcolor As Color, Optional ByVal varianzprozent As Integer = 0)
Liest alle Pixel im Bitmap-Objekt aus, die unter Berücksichtigung des übergebenen Varianz-Prozentwertes der Farbe entsprechen, und legt die Farbe dieser auf die übergebene Farbe fest.
- Public Property Bitmap() As Bitmap
Legt das Bitmap-Objekt fest oder gibt dieses zurück.
- Public Shared Function FromBitmap(ByVal bmp As Bitmap) As FastGraphics
Gibt eine neue Instanz der Klasse mit dem übergebenen Bitmap-Objekt zurück. - Public Shared Function FromScreen(ByVal rect As Rectangle) As FastGraphics
Gibt eine neue Instanz der Klasse mit einem Abbild des übergebenen Bildschirmbereiches als Bitmap-Objekt zurück.
- Public Sub Unlock()
Gibt den Bitmap-Bereich frei.
Wieso nutzen?
Die Methoden SetPixel und GetPixel entsprechen nicht der normalen Methode aus der Bitmap-Klasse, sondern basieren auf Marshaling. Sie sind um ein vielfaches schneller, so braucht die SetPixel-Methode aus dieser Library 1,379 Sekunden um ein Bild in einer Auflösung von 3888 x 2592 pixelweise zu bearbeiten, während die aus der Bitmap-Klasse 14,2468 Sekunden benötigt, d.h. die Methode aus dieser Library ist bis zu 10 mal so schnell. Die anderen Methoden (FindPixel, FindPixelPercent, FindAndSetPixel und FindAndSetPixelPercent) arbeiten ebenso effizient und ersparen einiges an Schreibarbeit.
Benchmark
(Bitmap-Klasse: 29,6059205848788 Sekunden
FastBitmap-Klasse: 3,65744249618137 Sekunden)
Framework-Version
Die Klassenbibliothek basiert auf dem .NET Framework 2.
Mergen
Ja, mit Verweis.
Download
Hier (ZIP, 6 Kb)
Changelog
1.0.0.1 - Bugfix
1.0.0.2 - Implementierung von Übergabe der Varianz als Prozentwert
1.0.0.3 - Implementierung einer Funktion zum direkten Kopieren eines Bildschirmbereichs
1.0.0.4 - Nutzung der Library vereinfacht.
1.0.0.5 - wichtiger Bugfix
Beispiel
LG
Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von „kevin89“ ()