Hallo,
also wenn ich das richtig deute, hast du eine Form in der ein Bild dargestellt wird. Du musst jetzt das
MouseDown Event des Containers deines Bildes afangen. Also konkret: du hast eine
PictureBox pictureBox; in der dein Bild angezeigt wird (das ist dein Bildcontainer). Jetzt fängst du das
MouseDown Event dieser
PictureBox ab. Das
MouseDown Event stellt dir in den
MouseEventArgs die Koordinaten des Klickpunkts bereit. Diese musst du nun für dein Bild verwenden. Bei der
PrictureBox musst du noch aufpassen, dass du das Bild beim anzeigen nicht verzerrst, sonst geht das nämlich nicht.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| public partial class Form1 : Form { private Color foregroundColor; private Color backgroundColor; private Bitmap bmp;
public Form1() { InitializeComponent(); }
private void pictureBox_MouseDown(object sender, MouseEventArgs e) { Bitmap deinBild = (Bitmap) pictureBox.Image; if (e.Button == MouseButtons.Left) foregroundColor = deinBild.GetPixel(e.X, e.Y); else if (e.Button == MouseButtons.Right) backgroundColor = deinBild.GetPixel(e.X, e.Y); } } |
Wenn du verzerrte oder skalierte Bilder hast, ist es - denke ich - am Besten, wenn du ein Screenshot machst und den auswertest. Das würde dann grob so aussehen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void Form1_MouseDown(object sender, MouseEventArgs e) { Bitmap screenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Size.Width, Screen.PrimaryScreen.Bounds.Size.Height); Graphics g = Graphics.FromImage(screenshot); g.CopyFromScreen(0, 0, 0, 0, screenshot.Size);
if (e.Button == MouseButtons.Left) foregroundColor = screenshot.GetPixel(MousePosition.X, MousePosition.Y); else if (e.Button == MouseButtons.Right) backgroundColor = screenshot.GetPixel(MousePosition.X, MousePosition.Y); } |
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler