|
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 |
|
|
|
|
Windows-Version |
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
|
Download (17,7
kB)
|
Downloads bisher: [ 511 ]
|
|
|