Avatar billede Slettet bruger
10. maj 2007 - 14:40 Der er 14 kommentarer og
1 løsning

Draw og update?

Hej.

Jeg tegner et recangle i min form, men når jeg ændre Color for den, opdatere den ikke, hvordan får jeg den til at køre onpaint igen, eller hele tiden draw mit recangle?

Håber i forstår :)
Avatar billede Spotgun Seniormester
10. maj 2007 - 15:13 #1
Prøv at køre DinRectangle.Invalidate() efter du har ændret farven.
Avatar billede Slettet bruger
10. maj 2007 - 17:37 #2
det er der ikke noget dr hedder på recangle?
Avatar billede Spotgun Seniormester
10. maj 2007 - 17:42 #3
Hvordan tegner du din rectangle på formen?
Avatar billede Slettet bruger
10. maj 2007 - 17:57 #4
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            //Draw towers
            g.FillRectangle(new SolidBrush(Color.Red), TowerARect);
            g.FillRectangle(new SolidBrush(Color.Red), TowerBRect);
            g.FillRectangle(new SolidBrush(Color.Red), TowerCRect);

            //Draw plates
            g.FillRectangle(new SolidBrush(PlateAColor), PlateARect);
            ControlPaint.DrawBorder(g, PlateARect, Color.Red, ButtonBorderStyle.Solid);
            g.FillRectangle(new SolidBrush(Color.Blue), PlateBRect);
            ControlPaint.DrawBorder(g, PlateBRect, Color.Red, ButtonBorderStyle.Solid);
            g.FillRectangle(new SolidBrush(Color.Blue), PlateCRect);
            ControlPaint.DrawBorder(g, PlateCRect, Color.Red, ButtonBorderStyle.Solid);
            g.FillRectangle(new SolidBrush(Color.Blue), PlateDRect);
            ControlPaint.DrawBorder(g, PlateDRect, Color.Red, ButtonBorderStyle.Solid);
            g.FillRectangle(new SolidBrush(Color.Blue), PlateERect);
            ControlPaint.DrawBorder(g, PlateERect, Color.Red, ButtonBorderStyle.Solid);
        }
Avatar billede Spotgun Seniormester
10. maj 2007 - 18:08 #5
Så prøv at kalde this.Invalidate() lige efter det sted hvor du ændrer farven...
Avatar billede Spotgun Seniormester
10. maj 2007 - 18:10 #6
Hvis ikke det virker med "this", så prøv med instansen af din Form1.
Avatar billede Slettet bruger
10. maj 2007 - 18:19 #7
this.Invalidate() virker, men så må jeg spørge for den ikke gør det hele tiden
Avatar billede Spotgun Seniormester
10. maj 2007 - 18:23 #8
this.Invalidate() tvinger formen til at gentegne sig (dvs. køre Paint metoden igen).
Hvis du f.eks. satte linie ind i bunden af din paint-metode, så ville dit program rigtigt nok blive tegnet korrekt hele tiden, men der vil til gengæld heller ikke ske meget andet...
Avatar billede Spotgun Seniormester
10. maj 2007 - 18:24 #9
Det er jo kun nødvendigt at gentegne din form, hvis der sker ændringer på den.
Avatar billede Spotgun Seniormester
10. maj 2007 - 18:24 #10
...og det var så et svar ;)
Avatar billede Slettet bruger
10. maj 2007 - 18:31 #11
Hmm, det må kunne gøres bedre! hele formen blinker når den gør det
Avatar billede Spotgun Seniormester
10. maj 2007 - 18:36 #12
Så skal du kigge på noget double buffering...
Avatar billede crazysnap Seniormester
13. maj 2007 - 19:36 #13
Hej wb-freekill,

Hvis du i stedet indsætter en PictureBox i din form og bruger dens Paint event til at tegne i, burde du slippe for det flickering du beskriver. Så skal du bare kalde PictureBox1.Invalidate() i stedet, forudsat din PictureBox-kontrol hedder PictureBox1.


Mvh.

- Snap
Avatar billede Slettet bruger
13. maj 2007 - 20:31 #14
okay, det vil jeg lige prøve, smid et svar også
Avatar billede crazysnap Seniormester
13. maj 2007 - 20:59 #15
Hej wb-freekill,

Giv du bare alle pointene til spotgun, det var ham der besvarede dit egentlige spørgsmål! :)

Held og lykke med det...


Mvh.

- Snap :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester