palaber
Captain
- Registriert
- Juni 2006
- Beiträge
- 3.856
Hi Leute,
ich hab hier eine Aufgabe bei der ich die OnPaint Methode überschreiben soll.
In dieser Methode soll ich das PantEventArgs Objekt verwenden um via
Graphics.DrawString(...) verschiedene Zeichen in verschiedenen Farben zu zeichen.
Soweit funktioniert alles. Da ich aber DrawString() auf eine Matrix mit vielen
Buchstaben (z.B. 10 x 10 Zeichen) anwende, flackert irgendwann die Darstellung.
DrawString() wird in einer geschachtelten Schleife durchlaufen...
Alle Versuche mit "DoubleBuffer = true" haben keine Abhilfe geschafft.
Wenn ich zuerst einen String in der Form der Matrix aufbaue, dann flackert das
Bild nicht. Allerdings kann ich dann die Farben der einzelnen Zeichen nicht beeinflussen.
Oder doch - und ich weiß nicht wie?
Ich dachte an eine Lösung ähnlich zu Graphics.FillRectangle() -> Graphics.DrawRectangle().
Ist so ewas möglich? Habe bisher nichts dazu gefunden.
Hier noch mein Code der OnPaint-Methode:
Danke schon mal für eure Hilfe!
ich hab hier eine Aufgabe bei der ich die OnPaint Methode überschreiben soll.
In dieser Methode soll ich das PantEventArgs Objekt verwenden um via
Graphics.DrawString(...) verschiedene Zeichen in verschiedenen Farben zu zeichen.
Soweit funktioniert alles. Da ich aber DrawString() auf eine Matrix mit vielen
Buchstaben (z.B. 10 x 10 Zeichen) anwende, flackert irgendwann die Darstellung.
DrawString() wird in einer geschachtelten Schleife durchlaufen...
Alle Versuche mit "DoubleBuffer = true" haben keine Abhilfe geschafft.
Wenn ich zuerst einen String in der Form der Matrix aufbaue, dann flackert das
Bild nicht. Allerdings kann ich dann die Farben der einzelnen Zeichen nicht beeinflussen.
Oder doch - und ich weiß nicht wie?
Ich dachte an eine Lösung ähnlich zu Graphics.FillRectangle() -> Graphics.DrawRectangle().
Ist so ewas möglich? Habe bisher nichts dazu gefunden.
Hier noch mein Code der OnPaint-Methode:
C#:
protected override void OnPaint(PaintEventArgs e)
{
var x = 15.0F;
var y = 15.0F;
var drawFont = new Font("Arial", 20);
var drawFormat = new StringFormat()
{
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center
};
for (int i = 0; i < this.rows; i++)
{
for (int u = 0; u < this.columns; u++)
{
var s = playgroundMatrix[u, i].ToString();
var drawBrush = s == "#" ? new SolidBrush(Color.Black) :
s == "o" ? new SolidBrush(Color.Blue) : new SolidBrush(Color.Red);
e.Graphics.DrawString(s, drawFont, drawBrush, x, y, drawFormat);
x += 30.0F;
}
}
x = 15.0F;
y += 30.0F;
}
}
Danke schon mal für eure Hilfe!