Laden...

Linie aus Picturebox löschen

Erstellt von Rico913 vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.184 Views
R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren
Linie aus Picturebox löschen

Bin grad am Verzweifeln und hab schon Einiges durchprobiert aber leider ohne Erfolg.

Ich habe eine PictureBox als Overlay über eine andere Picturebox gelegt.
In diese lasse ich Linien zeichnen.

Über ein Datagridview kann der User zum nächsten Bild wechseln. Dort sollen aber die Linien vom vorherigen Bild (Overlay) gelöscht werden. Und genau das passiert nicht - egal was ich probiere Refresh/Invalidate / graphics.clear die Linien bleiben.

Dispose funktioniert zwar, aber das Overlay ist dann ja bekanntermaßen weg, Kann ich dieses eventuell reaktivieren?

Könnt ihr mir bitte helfen?

16.806 Beiträge seit 2008
vor 3 Jahren

Du zeigst genau 0 Code.
>> [Hinweis] Wie poste ich richtig?

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Sorry, stimmt natürlich:


        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox_Image.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox_Overlay.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox_Overlay.Parent = pictureBox_Image;
            pictureBox_Overlay.Location = new Point(0, 0);
        }


private void panel1_draw_horizontal(object sender, PaintEventArgs e)
        {
            foreach (MessKoordinaten_Test Messlinie in Messung_Test)
                Messlinie.Draw(e.Graphics, Messen_Text_Rundung);
        }


public void Draw(Graphics gr, int Messen_Text_Rundung)
    {
        Pen pen = new Pen(Color.Green, 1);
        Font font = new Font("Arial", 8, FontStyle.Bold);
        pen.StartCap = LineCap.SquareAnchor;
        pen.EndCap = LineCap.RoundAnchor;
        gr.DrawLine(pen, MousePosition_Start_X_picBox_Lst, MousePosition_Start_Y_picBox_Lst, MousePosition_Ende_X_picBox_Lst, MousePosition_Start_Y_picBox_Lst);
        int Point_Text_X = ((MousePosition_Ende_X_picBox_Lst - MousePosition_Start_X_picBox_Lst) / 2) + MousePosition_Start_X_picBox_Lst - 10;
        int Point_Text_Y = MousePosition_Start_Y_picBox_Lst - 15;
        Laenge_Lst = Math.Round(Laenge_Lst, Messen_Text_Rundung);
        gr.DrawString(Laenge_Lst.ToString(), font, Brushes.Black, new Point(Point_Text_X, Point_Text_Y));
      }


        private void Messung_horz_Click(object sender, EventArgs e)
        {
            Check_MessenEnde = false;
            pictureBox_Image.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
            pictureBox_Overlay.Paint += new PaintEventHandler(panel1_draw_horizontal);
            Click_First = true;
        }


        private void Image_Delete_Measurement()
        {
           ????
        }

16.806 Beiträge seit 2008
vor 3 Jahren

Du beachtest leider immer noch nicht die Tipps aus den anderen Beiträgen, wo Du nach Hilfe gefragt hast.
DataGridview mit anderem DataGridview verknüpfen
Wie kann ich in einer PictureBox die 2te-Nte Linie Zeichnen, ohne dass die erste gelöscht wird?

Es ist ziemlich entmutigend wenn Du von Helfern Tipps bekommst und Du diese einfach offenbar ignorierst; diese aber eigentlich helfen sollen Dein Ziel zu erreichen.
Da musst Dich dann nicht wundern, wenn die Leute Dir aus dem Gedanken, dass Du es eh nicht beachtest, keine Antworten mehr bekommst.

Die Idee ist ja eigentlich, dass Du eine Bitmap erzeugst und diese der PictureBox zuweist - und entsprechend auch wieder entfernen kannst.
Sehe ich hier nirgends.

4.931 Beiträge seit 2008
vor 3 Jahren

Lies dir den Abschnitt "Die Verwendung von PictureBox" (bes. "Wenn es so einfach geht, wo ist der Haken?") in [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox) (3. Beitrag) durch.

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Lieber Abt,
ohne die Tipps der Helfer wäre ich noch nicht so weit gekommen, wie bisher!!
Da ich zur Zeit in Elternzeit bin habe ich ungefähr 1 bis 2 Stunden, wenn überhaupt, am Tag Zeit für mein Projekt. Da dieses, wie du sicherlich schon in Erfahrung gebracht hast, mehrere Baustellen hat, arbeite ich mal an der Problemlösung und mal an dem Problem.
Googlen, Recherchieren und einarbeiten dauert eine Weile und ich lerne noch. Ich stehe sozusagen am Anfang und bin dankbar! dass es dieses Forum gibt. Nur weil ich ein Thema nicht zeitnah umsetze, heißt das noch lange nicht, dass ich das Thema bzw. die Hilfestellung nicht auf dem Schirm habe. Von daher finde ich:

Zu unterstellen, ich würde die Tipps nicht umsetzen, sehr entmutigend!!!

Eben bspw. Dank der Hilfe bzw. des Hinweises von JimStark habe ich das Thema der 2ten Linie gelöst! Und wie so oft ist ein neues Problem aufgetaucht, eben das die vielen gezeichneten Linien nicht mehr gelöscht werden können 😦

Hinweis von Abt vor 3 Jahren

Bitte keine Full Quotes
[Hinweis] Wie poste ich richtig?