Immer die pixel-Farbe von PictureBox zeichnen von Linien, die nach
Ich habe eine PictureBox geladen mit einer bitmap, die, sagen wir, ein Foto:
Picture1.Image = new Bitmap("photo.bmp");
Und in Picture1_Paint()
Ereignis, Male ich eine Linie auf dem Foto:
e.Graphics.DrawLine(myPen, pointA, pointB);
Nun, ich möchte Anzeige RGB info des angeklickten pixels:
Bitmap bitmap = (Bitmap) Picture1.Image; /* Making sure I'm using the image being displayed */
Color color = bitmap.GetPixel(e.X, e.Y);
lblSelectedColor.Text = color.R.ToString() + ", " + color.G.ToString() + ", " + color.B.ToString();
Das problem ist: der RGB-Wert, den ich bekomme, ist die Farbe des pixels auf dem ursprünglichen Foto, nicht einschließlich meine Zeichnungen. Zum Beispiel, wenn eine Dicke rote Linie gezogen, in den Himmel, wenn ich auf die rote Linie, ich bekomme noch sky-Blaue Farbe aus dem Foto.
Möchte ich, um die Farb-info von was auch immer gezeigt wird, in die PictureBox, einschließlich der Linien oder Kreise, die ich zog.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen Unterschied zwischen Zeichnung auf dem Bildschirm belegt durch die Kontrolle durch die
Paint
Ereignis oder dieOnPaint
- Methode und zeichnen auf die bitmap angezeigt in der control -. Sie machen die ehemaligen, sondern versuchen, um ein pixel von der letzteren.Anstatt zu ziehen in der
Paint
Veranstaltung, die Sie haben, um eineGraphics
Objekt für Ihr Bild und zeichnen Sie auf, dass Sie direkt. Weisen Sie dann das Bild auf dieImage
- Eigenschaft des bildfelds.Beispielsweise aus der Spitze von meinem Kopf:
Dann, wenn Sie
GetPixel
auf dieImage
Objekt in der Bild-box, erhalten Sie die pixel mit dem Wert der Zeile, die Sie gezeichnet hat.Bitmap bitmap = (Bitmap) Picture1.Image;
würde sicherstellen, dass das Bild beinhaltet alle Zeichnung?Paint
- Ereignis Sie zeichnen auf dem Bildschirm. Wenn Sie das tunPicture1.Image
erhalten Sie das Bild, das Sie gab, um das picturebox-zurück von ihm, und das ist nicht das Bild, das Sie sehen auf dem Bildschirm gezeichnet.Verwenden Bob Powell ' s Eye Dropper, hier ist der code:
Wenn Sie wollten, probieren Sie die Farben in einer PictureBox oder in Ihrer eigenen form, dann müssen Sie einfach zu erhalten, die DC für das Objekt. Dies kann erreicht werden, mit CreateGraphics, Grafiken.GetHdc und Grafiken.ReleaseHdc. Die Auflistung unten zeigt ein MouseMove-handler kann verwendet werden, um die pixel-Farbe von der form.