Rubrik: Grafik und Font · Bilder und Icons | VB-Versionen: VB2005, VB2008 | 25.04.08 |
Farbe unter dem Mauszeiger zurückgeben Das Beispiel ermöglicht die Position des Mauszeigers, sowie die Farbe des Pixels, über dem sich der Mauszeiger befindet, zurückzugeben. | ||
Autor: Heinz Prelle | Bewertung: | Views: 13.590 |
www.visual-basic5.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute stellen wir Ihnen eine Klasse vor, mit der sich die Farbe des Bild-Pixels einer PictureBox, über dem sich der Mauszeiger befindet, zurückgeben lässt.
Erstellen Sie hierzu ein neues Windows-Forms Projekt, platzieren auf die Form eine PictureBox und weisen dieser eine beliebige Bilddatei zu. Platzieren Sie jetzt noch zwei Label-Controls unterhalb der PictureBox (Label1 und Label2).
Public Class Form1
''' <summary> ''' Farbwert unter dem Mauszeiger ermitteln ''' </summary> Public Class GetColorFromPoint ''' <summary> ''' Funktion zur Ermittlung der Farbe unter dem Mauszeiger ''' </summary> ''' <param name="pb">Die PictureBox mit Bild/Grafik</param> ''' <returns>Den ermittelten Farbwert</returns> Public Shared Function GetColor(ByVal pb As System.Windows.Forms.PictureBox, _ ByVal e As System.Windows.Forms.MouseEventArgs, _ ByRef Position As Point) As Color ' Bitmap Objekt Dim hBitmap As Bitmap = Nothing ' Fehlerüberwachung einschalten Try ' Variable hBitmap initialisieren hBitmap = New Bitmap(1, 1) ' Nutzung der Grafikklasse Using g As Graphics = Graphics.FromImage(hBitmap) With g ' Transfer der benötigten Daten .CopyFromScreen(pb.PointToScreen(e.Location), New Point(0, 0), hBitmap.Size) ' Wert der Position des Mauszeigers an die Variable Position übergeben Position = e.Location() ' Übergabe an die Variable Color Dim Color As Color = hBitmap.GetPixel(0, 0) ' Rückgabe des ermittelten Farbwertes Return Color End With End Using Catch ex As Exception ' Eventuell auftretenden Fehler abfangen und ' Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info") Finally ' Resourcen freigeben If hBitmap IsNot Nothing Then hBitmap.Dispose() End Try End Function End Class
Private Sub PictureBox1_MouseMove(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove ' Fehlerüberwachung einschalten Try ' Positionsvariable deklarieren Dim p As Point = Nothing ' Benötigten Wert aus der Funktion GetColor holen Dim Color As Color = GetColorFromPoint.GetColor(PictureBox1, e, p) ' Farbwert zum Test an das Label als neue Hintergrundfarbe übergeben Label1.BackColor = Color ' Positionsvariable auswerten Label2.Text = "Position: " & p.X.ToString() & " - " & p.Y.ToString() Catch ex As Exception ' Eventuell auftretenden Fehler abfangen und ' Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info") End Try End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Label1.AutoSize = False Label1.Width = 30 Label1.Height = 12 End Sub
End Class