Graphics g = this.CreateGraphics(); --> Qualitätsverlust trotz Dubblepuffered
-
Hallo.
Mir ist aufgefallen thas wenn ich diesen Code verwende:Graphics g = this.CreateGraphics(); g.FillEllipse(Pinsel, int x, int y, radius x, radius y)
Und ich nun int x(Koordinaten) ändere es extrem stark flimmer obwohl ich dubble puffered ein habe.
Muss ich um keinen Qualitätsverluste zu haben es trotzdem mit e.Graphics.... machen oder gibt es eine Möglichkeit die Qualität trotzdem so zu verbessern?mfg
-
Das ist etwas wenig Code... Allerdings sieht das CreateGraphics ziemlich gefährlich aus...
-
Wo Zeichnest Du denn ? Das CreateGraphics schaut nicht nach dem "OnPaint" Ereigniss aus.
-
Meine Zeichenfläche ist das ganze Fenster.
Also das ganze ist ein Codeschnipsel aus meinem Pingpong Projekt.
Mein Code sieht so aus:private int XBall = 100; // Position des Balles auf der X Koordinate private int YBall = 100; // Position des Balles auf der Y Koordinate private int TempoX = -1; // Wert um den Xball erhöht wird private int TempoY = 1; // Wert umden YBall erhöht wird private int XBalken = 500; // Position des Balkens(Bei PingPong wo es abprallt) private int YBalken = 125; // Position des Balkens auf Y private int Druck = 0; //Wenn Druck != 0 ist bewegt sich der Balken private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = this.CreateGraphics(); SolidBrush Pinsel = new SolidBrush(Color.Firebrick); g.FillEllipse(Pinsel, XBall, YBall, 20, 20); SolidBrush PinselStange = new SolidBrush(Color.Black); g.FillRectangle(PinselStange, XBalken, YBalken, 20, 200); SolidBrush PinselWand = new SolidBrush(Color.Blue); g.FillRectangle(PinselWand, 0, 0, 20, 395); g.FillRectangle(PinselWand, 0, 0, 550, 20); g.FillRectangle(PinselWand, 0, 395, 550, 20); } private void timer1_Tick(object sender, EventArgs e) { XBall += TempoX; YBall += TempoY; Refresh();// Damit will ich das ganze dann neu Zeichnen }
Durch diesen Code flimmert, aber das Fenste sehr stark.
WEnn ich stattdessen nehme : e.Graphics.FillEllipse();
dann flimmert es nicht mehr.
Gibt es nun eine noch bessere Methode es zu machen ohne es auszuschreiben zu müssen?mfg
-
Sag ich ja... CreateGraphics sieht gefährlich aus!
Gibt es nun eine noch bessere Methode es zu machen ohne es auszuschreiben zu müssen?
Sowas?
Graphics g = e.Graphics;
-
Ja danke. Das ist genau das Richtige.
In meinem C# Buch steht nämlich nur der Code der eh schon oben steht^^
mfg und Thx
Wandernder Mongole