Rysowanie w PictureBox

0

Cześć,
sytuacja wygląda tak: Stworzyłem sobie nowego PictureBoxa i chciałbym teraz napisać funkcję którą będę wywoływał z różnymi parametrami, które będą koordynatami. W tych miejscach powinien być narysowany prostokąt w PictureBoxie. Niekoniecznie musi być to PictureBox, ale wydaje mi się że nada się do tego. Pierwszy raz go używam więc nie mogę się zorientować jak to zrobić z tego co widziałem wszyscy używają eventu Paint którym nie mogę się raczej posłużyć.

Rozumiem że powinienem na początku stworzyć obiekt bitmapy który wypełniłby mi całego PictureBoxa.

gamePictureBox.Image = new Bitmap(gamePictureBox.Height, gamePictureBox.Width);

W sumie to brakuje mi metody, która narysowałaby mi np.:

Rectangle ee = new Rectangle(10, 10, 30, 30);

Zastanawia mnie też czy z czasem nakrywanie prostokątów innymi z czasem nie spowolni pracy programu.

1

Nie musisz tworzyć obiektu bitmapy.

Rysujesz po kontrolce (równie dobrze może to być panel na przykład.

Można tak:


        Random rand = new Random();
        private void button1_Click(object sender, EventArgs e)
        {
            int x = rand.Next(0, panel1.Width);
            int y = rand.Next(0, panel1.Height);

            Brush brush = new SolidBrush(Color.Red);           
            drawRectangle(pictureBox1, new Rectangle(x, y, 10, 10), brush);
        }

        private void drawRectangle(PictureBox pictureBox, Rectangle rectangle, Brush brush)
        {
            Graphics  g = pictureBox.CreateGraphics();
            g.FillRectangle(brush, rectangle);
        }
0

Hmm, ok wszystko działa tylko mam problem w sytuacji gdy chcę by wywołanie drawRectangle było w metodzie która sobie napiszę, a nie w evencie na przycisku. Kompilator przepuszcza ale nic nie pojawia się wtedy na panelu.

0

Hmm podejrzewam w czym jest problem. Nie mogę rysować po panelu dopóki forma nie wyświetli się. Czyli nie mogę użyć metody w konstruktorze, bo wywołanie jej nic mi nie da. W takim razie jak to rozwiązać bez przycisków? :)

EDIT: event shown wydaje się rozwiązywać sprawę

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