Wie positioniere ich in VB.NET 2003 per Klick auf eine PictureBox den Cursor in einer anderen PictureBox an der angeklickten Farbposition?

Antwort vom

**In VB.NET 2003 setzt du den Cursor in einer `PictureBox` nicht direkt „auf eine Farbe“, sondern auf die Pixelposition, auf die geklickt wurde. Entscheidend ist also das `MouseDown`- oder `Click`-Ereignis und die Mauskoordinate `e.X` / `e.Y`.** ## So funktioniert es Wenn du in eine `PictureBox` klickst, bekommst du die genaue Position des Klicks. Diese Position kannst du speichern und dort z. B. ein Fadenkreuz, einen Punkt oder einen Auswahlrahmen zeichnen. ```vb Private CursorX As Integer Private CursorY As Integer Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown CursorX = e.X CursorY = e.Y PictureBox1.Invalidate() End Sub Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint e.Graphics.DrawLine(Pens.Red, CursorX - 5, CursorY, CursorX + 5, CursorY) e.Graphics.DrawLine(Pens.Red, CursorX, CursorY - 5, CursorX, CursorY + 5) End Sub ``` ## Wichtiger Unterschied Wenn du wirklich die **Farbe an der Klickstelle** meinst, musst du zusätzlich das Bild auslesen. Dann bekommst du nicht nur die Position, sondern auch den Farbwert des Pixels. ```vb Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown Dim bmp As Bitmap = CType(PictureBox1.Image, Bitmap) Dim c As Color = bmp.GetPixel(e.X, e.Y) MsgBox("X=" & e.X & " Y=" & e.Y & " Farbe=" & c.ToString()) End Sub ``` ## Praktisch wichtig Das klappt nur sauber, wenn Bildgröße und `PictureBox`-Größe übereinstimmen. Sobald `StretchImage` verwendet wird, stimmen Klickposition und echte Pixelposition oft nicht mehr direkt überein. Wenn du also einen „Cursor“ in der Bildposition setzen willst, ist die Klickkoordinate richtig. Wenn du einen bestimmten **Farbpunkt suchen** willst, musst du das Bild pixelweise nach dieser Farbe durchsuchen.

Kategorie: Technik Tags: VBNET PictureBox Cursor

Verwandte Fragen

Wie füge ich in VB.NET 2003 allen MainMenu-MenuItems den Handler Men_Click hinzu und werte sie später über Select Case sender.Text aus?

Ja – aber in VB.NET 2003 musst du den Click-Handler jedem MenuItem einzeln oder rekursiv zuweisen, weil MainMenu selbst keine Klicks auslöst. Entscheidend ist: Nicht das MainMenu, sondern j...

Wie erhalte ich in VB.NET 2003 eine Auflistung der oberen Ebene von MainMenu1?

In VB.NET 2003 bekommst du die Einträge der obersten Ebene eines MainMenu über dessen MenuItems-Auflistung. Für MainMenu1 sind also genau diese Elemente die Menüpunkte der oberen E...