Rysowanie na panelu

0

Witam. Utworzyłem w okienku programu "panel" i "pictureBox". Utworzyłem także nową klasę, w której zamieściłęm funkcje :

  
public class system_budki : Form1
    {
            public void symulacja() {
            Graphics g;
                while (flaga == true)
                {
                 sprzwdz_zdarzenie();

                    if (sprzwdz_zdarzenie() == 10)
                    {
                        if (sprawdz_telefony() < 4)
                        {
                            telefony[sprawdz_telefony()].dodaj_osobe(czas_systemowy, tab_2[patryk], 0);
                            
                            g = panel.CreateGraphics();
                            Image kulka = Image.FromFile(@"C:\Users\Patryk\Desktop\kulka.jpg");
                            g.DrawImage(kulka, 33, 50, 30, 30);
                            pictureBox3.Image = Image.FromFile(@"C:\Users\Patryk\Desktop\kulka.jpg");

                            
                            MessageBox.Show("Wszedł do budki " + czas_systemowy);
                        }
                        else
                        {
                            osoby.Enqueue(new osoba(1,czas_systemowy)); //
                            MessageBox.Show("Wszedł do kolejki " + czas_systemowy);
                        }
                        //pobierz_czas();
                        flaga = false;
                    }
                }
            }

Problem polega na tym, że wywołując tą funkcje w klasie Form1 nie otrzymuję rysunków ani na "panelu", ani w "pictureBox".

Klasa Form1 :

 
public partial class Form1 : Form 
    {

        system_budki mojsystem;
        
        public Form1()
        {
            InitializeComponent();

        }

        public void button1_Click(object sender, EventArgs e)
        {
            
            if (mojsystem.czas_systemowy < 100)
            {
                mojsystem.flaga = true;
                mojsystem.symulacja();
                mojsystem.pobierz_czas();
            }
            else {
                MessageBox.Show("Przekroczony czas symulacji");
            }
                                                 
        }
}

Pozdrawiam.

0

Bo rysujesz na panelu w obiekcie mojsystem klasy system_budki, a nie formie, na którym prawdopodobnie chcesz rysować.

Po pierwsze - dlaczego system_budki dziedziczy po Form1?

0
somekind napisał(a)

Po pierwsze - dlaczego system_budki dziedziczy po Form1?

Ponieważ myślałem, że dzięki temu będę rysował na panelu w Formie.

Czy jest możliwość (jeśli tak jak można to zrobić) aby funkcje rysujące umieszczone w klasie system_budki rysowały na panelu w Formie ?

0

Tak. Najłatwiej będzie, jeśli przekażesz ten panel jako argument do metody z klasy system_budki. I pozbądź się tego niepotrzebnego dziedziczenia, ten mechanizm służy do czegoś zupełnie innego.

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