Tipp 0179 Color Picker
Autor/Einsender:
Datum:
  Michael Werner
16.05.2008
Entwicklungsumgebung:   VB.Net 2005
Framework:   2.0
Auch in Visual Basic .NET darf der Color-Picker nicht fehlen, daher demonstriert dieser Tipp, wie man die Farbe unter der Maus vom Desktop holt und in verwertbare Farb-Formate konvertiert.
Für die Übernahme der Farbe vom Desktop wird die Graphics.CopyFromScreen-Methode verwendet, die in .NET 2.0 neu eingeführt wurde. CopyFromScreen führt  eine Bitblockübertragung der Farbdaten vom Bildschirm auf die  Zeichnungsoberfläche des Graphics-Objektes aus. Mit der Bitmap.GetPixel-Methode kann nun die Farbe des angegebenen Pixels  (hier: Position 0,0) in der Bitmap abgelegt werden. Anschließend wird die Color-Struktur in RGB-Werte und in das HTML-Format konvertiert.
Ein Timer fragt den Color-Wert am Cursor regelmäßig ab. Über das Ereignis MouseDown über der Form wird der benutzerdefinierte Pipetten-Cursor aus der eingebetteten Ressource geladen. Nun kann der Benutzer den Maus-Cursor an eine beliebige Stelle am Desktop führen und beim Ereignis MouseUp (Loslassen der Maustaste) wird die Farbe übernommen, angezeigt und in Farbwerte zerlegt. Der Cursor wird auf Default zurückgesetzt und der Farbwert auf Wunsch in die Zwischenablage kopiert.
 
Private myTimer As Timer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
        System.EventArgs) Handles MyBase.Load
   'Timer konfigurieren und starten
  myTimer = New Timer
  myTimer.Interval = 100
  AddHandler myTimer.Tick, AddressOf myTimer_Tick
  myTimer.Enabled = True
End Sub

Private Sub myTimer_Tick(ByVal sender As System.Object, ByVal e _
        As System.EventArgs)
  Dim bmp As Bitmap = New Bitmap(1, 1)
  Dim g As Graphics = Graphics.FromImage(bmp)
   ' Die Graphics.CopyFromScreen-Methode
  g.CopyFromScreen(Windows.Forms.Cursor.Position.X, _
    Windows.Forms.Cursor.Position.Y, 0, 0, bmp.Size)
   ' Die Bitmap.GetPixel-Methode

  Dim col As Color = bmp.GetPixel(0, 0)
  PictureBox1.BackColor = col
   'Color konvertieren
  Label1.Text = CStr(col.R & ", " & col.G & ", " & col.B)
  Label2.Text = ColorTranslator.ToHtml(col)
  Label3.Text = CStr(col.ToArgb)
End Sub

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As _
        System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
  myTimer.Enabled = True
   ' Pipetten-Cursor
  Me.Cursor = New Cursor(Me.GetType(), "Pipette.cur")
End Sub

Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As _
        System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
  Me.Cursor = Cursors.Default
  myTimer.Enabled = False

   ' Radios auswerten
  If RadioButton1.Checked Then
    My.Computer.Clipboard.SetText(Label1.Text)
  ElseIf RadioButton2.Checked Then
    My.Computer.Clipboard.SetText(Label2.Text)
  ElseIf RadioButton3.Checked Then
    My.Computer.Clipboard.SetText(Label3.Text)
  Else
    ' Nicht kopieren
  End If
End Sub
 
Weitere Links zum Thema
Bekannte Farben auslesen (KnownColors)
Farbwerte konvertieren

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (17,7 kB) Downloads bisher: [ 504 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 24. Januar 2012