Rysowanie koła w panelu

0

Witam
Próbuje na akcje buttona narysować koło w Panelu, oto mój kod który nie działa, prosiłbym o wskazówki

private void button1_Click(object sender, EventArgs e)
        {
            Bitmap forma = new Bitmap(panel1.Width, panel1.Height);
            Graphics g = Graphics.FromImage(forma);
            g.DrawEllipse(Pens.Red, 20, 20, 40, 40); 
     }
0

Przeczytaj ten kod i zastanów się dlaczego on w ogóle miałby coś robić? Tworzysz nową bitmapę w pamięci o wielkości takiej jak panel i potem po niej rysujesz. I niż już z nią nie robisz.

  1. Zachowaj tę bitmapę do jakiegoś pola klasy i wywołaj Invalidate na panelu i przeładuj zdarzenie OnDraw tego panelu oraz tam skopiuj całą bitmapę.
  2. Zrób to bez dodatkowej bitmapy - wywołaj tylko Invalidate i w OnDraw narysuj to co chcesz.
  3. Zamień panel na ImageBox. Dzięki temu będziesz mógł po "kanwie" rysować "na żywo".
0

Nie kminie Cie ziom...

0

Dla panelu musisz wywołać zdarzenie Paint w którym rysujesz bitmapę

  e.Graphics.DrawImage(bitmap, new Point(0));

natomiast w obsłudze przycisku tworzysz tą bitmapę i wywołujesz Invalidate dla panelu

 Graphics g = Graphics.FromImage(bitmap);
            g.DrawEllipse(Pens.Red, 20, 20, 40, 90);
            panel1.Invalidate();
0

Dzięki mistrzu!

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