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
Annonceindlæg fra SoftwareOne
20. september 2004 - 09:42
#1
Prøv lige at post'e lidt kode...
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; } } }
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); } }
20. september 2004 - 19:23
#4
du mener du ryde op, og ikke rydde på :-P
22. september 2004 - 17:22
#5
.. prøv at sætte en g.Clear( <baggrundsfarve> ); ind før du begynder at tegne
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.