problem z invalidate()

0

Witam, mam taki kawałek kodu w panel1_mouseDown

g = panel1.CreateGraphics();
 paint = true;
 if (mode == "rect")
            {
                
                rec = new Rectangle(e.X, e.Y, 2, 2);
                g.DrawRectangle(pen, rec);
                RecX = e.X;
                RecY = e.Y;
         
            }

oraz taki kawałek w panel1_MouseMove

 panel1.Refresh();

                    draw();
                    if (mode == "rect")
                    {
                        pen=new Pen(new SolidBrush(crcolor));
                        pen.Width = penwidth;
                        g.DrawRectangle(pen, rec);
                      
                        if (isFill == true)
                        {
                            brush = new SolidBrush(fillcolor);
                            g.FillRectangle(brush, rec);
                        }
                    }

Czyli rysowanie jak w rl paint ale jak ruszę myszką 1 px to panel jest czyszczony panel1.Refresh(); i wszystko od nowa rysowane draw(); + kwadrat z nowymi współrzędnymi g.DrawRectangle(pen, rec); przez co obraz mi się zacina nawet na podwójnym buforowaniu więc chciałem sobie zamienić g.DrawRectangle(pen, rec); na Invalidate(); , próbowałem na różne sposoby ale nic mi nie działa więc bardzo proszę o pomoc! z góry dziękuję!

0

a nie możesz rysować na obiekcie trzymanym w zmiennej Image lub Bitmap i samą zmienną zbindować do Imageboxa ? Czyszczenie Imageboxa też zrób inaczej, czyść tylko region swojego rectangle. Dodatkowo g = panel1.CreateGraphics() zamknij w bloku using.

1 użytkowników online, w tym zalogowanych: 0, gości: 1