Laden...

Das Neuzeichenen eines Panels anstoßen [wollte werden Sammel-Thread Projekt Accuracygame]

Erstellt von Shinigami vor 12 Jahren Letzter Beitrag vor 12 Jahren 977 Views
Thema geschlossen
S
Shinigami Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren
Das Neuzeichenen eines Panels anstoßen [wollte werden Sammel-Thread Projekt Accuracygame]

ich erstell mir hier mal einen thema, da ich glaub ich nich nur einmal hier die hilfe benötigen werde 😃

also mein derzeitiges projekt ist ein kleines spiel in dem man mit einem mausklick einen punkt (5x5 rechteck) treffen muss
man bekommt für jeden treffer punkte und hat 1min zeit

so viel zum spiel

das problem ist jetzt:
ich möchte erst einmal wenn man auf das panel (panelgame, blaues feld) klickt das dann der punkt seine position verändert
(code stell ich ganz nach unten!)
der panelgame_click soll also am besten panelgame_paint() aufrufen
aber wie kann ich dann hier den painteventargs zuweisen?
geht das überhaupt so? wenn nicht wie dann?

namespace accuracygame
{
    public partial class accuracygame : Form
    {
        bool sideon = false; //ob die seite ausgeklappt ist oder nicht
        Random rnd = new Random(); //erstellung einer randomzahl
        SolidBrush sbr = new SolidBrush(Color.Red);
        int x, y;

        public accuracygame()
        {
            InitializeComponent();
        }

        private void btnside_Click(object sender, EventArgs e) //für das derzeitige problem ohn bedeutung!
        {
            if (sideon == false)
            {
                accuracygame.ActiveForm.Width += 200;
                btnside.Text = "<<";
                sideon = true;
            }
            else
            {
                accuracygame.ActiveForm.Width -= 200;
                btnside.Text = ">>";
                sideon = false;
            }
        }

        private void panelgame_Paint(object sender, [B]PaintEventArgs[/B] e) //das möcht ich aufrufen
        {
            x = rnd.Next(0, panelgame.Size.Width);
            y = rnd.Next(0, panelgame.Size.Height);
            Rectangle rect = new Rectangle(x, y, 5, 5);
            e.Graphics.FillRectangle(sbr, rect);
        }

        private void panelgame_Click(object sender, EventArgs e) //und zwar mit einem klick auf das panelgame
        {
            //panelgame_Paint(sender, [B]???[/B]);
        }
    }
}
795 Beiträge seit 2006
vor 12 Jahren

Hi!

panelgame.Invalidate() sollte das sein, was du suchst.

Ausserdem solltest du die Berechnung von x und y in das Click-Event verlagern, da Paint öfters aufgerufen wird.

Gruß, Christian.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
S
Shinigami Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren

jep hat funktioniert
weis zwar ersteinmal noch nicht warum aber das werde ich mir mal erlesen
danke

16.834 Beiträge seit 2008
vor 12 Jahren

Hallo und willkommen im Forum.

Wie Du [Hinweis] Wie poste ich richtig? Punkt 1.2 entnehmen kannst, eröffne für jedes Thema einen eigenen Thread im passenden Themenbereich.
Zudem schadet es sicherlich nicht, die anderen Punkte durchzulesen.

Daher geschlossen.

Hinweis von herbivore vor 12 Jahren

... insbesondere Punkt 1.1.1 und 1.1. Einen Einstieg ins Zeichnen in Windows Forms findest du [Artikel] Zeichnen in Windows-Forms-Programmen

Thema geschlossen