Avatar billede excession Nybegynder
20. september 2004 - 08:58 Der er 6 kommentarer

GDI - Fjern noget paint

Hejsa

Jeg tegner en streg på en control, som jeg gør noget med.  100 ms efter vil jeg gerne fjerne stregen igen.  Men hvordan gør jeg det?

Lige nu prøver jeg at Invalidate control'en efter 100 ms, men det bliver ikke fjernet..  Hvordan gør jeg det?

-- xs
Avatar billede wisen Nybegynder
20. september 2004 - 09:42 #1
Prøv lige at post'e lidt kode...
Avatar billede excession Nybegynder
20. september 2004 - 10:00 #2
jeg har et panel, som jeg prøver at tegne i/på.  Jeg kalder Invalidate på panelet efter 70 ms.  Det sker gennem tick event

tick event:

private void timer1_Tick(object sender, System.EventArgs e)
        {
pnlStatus.Refresh();
pnlStatus.Invalidate();
}


pnlStatus Paint event:

        // Paint the portion of the panel invalidated during the tick event.
        private void pnlStatus_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            Color blueish = Color.FromArgb(0, 51, 153);            // mørk blå
            using (LinearGradientBrush brush = new LinearGradientBrush(pnlStatus.ClientRectangle, Color.Transparent, blueish, LinearGradientMode.Horizontal))
            {
                Graphics g = e.Graphics;
                g.SmoothingMode = SmoothingMode.HighQuality;
                brush.SetSigmaBellShape(0.9f);
                g.FillRectangle(brush, xTransCoord, 0, transWidth, 3);
                xTransCoord += 1;
                transWidth += 1;
                if (xTransCoord == pnlStatus.Width)
                {
                    xTransCoord = 0;
                }
            }
        }
Avatar billede excession Nybegynder
20. september 2004 - 10:02 #3
for overskuelighedens skyld kan vi lige rydde lidt på i Paint event:


        // Paint the portion of the panel invalidated during the tick event.
        private void pnlStatus_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            Color blueish = Color.FromArgb(0, 51, 153);            // mørk blå
            using (LinearGradientBrush brush = new LinearGradientBrush(pnlStatus.ClientRectangle, Color.Transparent, blueish, LinearGradientMode.Horizontal))
            {
                Graphics g = e.Graphics;
                g.SmoothingMode = SmoothingMode.HighQuality;
                brush.SetSigmaBellShape(0.9f);
                g.FillRectangle(brush, xCoord, yCoord, myWidth, myHeight);
            }
        }
Avatar billede Syska Mester
20. september 2004 - 19:23 #4
du mener du ryde op, og ikke rydde på :-P
Avatar billede wisen Nybegynder
22. september 2004 - 17:22 #5
.. prøv at sætte en g.Clear( <baggrundsfarve> ); ind før du begynder at tegne
Avatar billede excession Nybegynder
22. september 2004 - 18:52 #6
Jeg har opgivet lige forløbig..

Grunden til det ikke virker er fordi, jeg har giver panelet en transparent backcolor.  Det virker fint hvis det ikke er transparent..

Men jeg lader spørgsmålet være åbent
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