c# - перерисовка панели (сделать недействительной) - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть панель, на которой пользователь может что-то нарисовать.

Однако эту панель можно прокручивать, и после прокрутки нарисованные объекты за пределами видимого вида исчезают.

Искал его и думаю, что он как-то связан с аннулированием, но не может понять, в чем проблема

см. Код ниже:

    private void panel1_MouseDown(object sender, MouseEventArgs e)
    {
        Point punt = new Point(e.X, e.Y);
        listofpoints.Add(punt);
        moving = true;
        panel1.Cursor = Cursors.Cross;
    }

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {

        Graphics g = panel1.CreateGraphics();
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        Point punten = new Point(e.X, e.Y);
        Pen penceel = new Pen(def, 5);
        penceel.StartCap = penceel.EndCap = System.Drawing.Drawing2D.LineCap.Round;
        if (moving && listofpoints.Count > 1)
        {
            g.DrawLine(penceel, (Point)listofpoints[listofpoints.Count - 1], punten);
            listofpoints.Add(punten);
        }
    }

    private void panel1_MouseUp(object sender, MouseEventArgs e)
    {
        moving = false;
        panel1.Cursor = Cursors.Default; 
    }

    private void button2_Click(object sender, EventArgs e)
    {
        panelhoogte = panelhoogte + 500;
        panel1.Height = panelhoogte;

        vScrollBar1.Show();
        vScrollBar1.Maximum = panel1.Height; 

    }

    private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
    {
        //panel1.Invalidate(panel1.Bounds, true); 
        panel1.Location = new Point((-1*hScrollBar1.Value), (-1 * vScrollBar1.Value));
        panel1.Update();
    }       
...