FwDonnerbalken
Erfahrenes Mitglied
Hallo zusammen,
ich schlage mich gerade mit dem Problem rum, dass ich einen Text mittels DrawString in eine PictureBox schreibe, ich tue dies, da ich den Text auch rotiert darstellen möchte.
Die PictureBox verwende ich, da ich einen Container zum zeichnen brauchte, sie ist beliebig ersetzbar.
Der Reihe nach:
Ich habe ein neues Windows Steuerelement erstellt, in diesem habe ich ein TableLayoutPanel platziert, welches zum einen meine PictureBox und zum anderen ein DataGridView beinhaltet.
Über eine Eigenschaft wird der Text festgelegt, der in die PictureBox gerendert werden soll.
Außerdem habe ich OnPaint überschrieben (Code folgt), wo ich den Text neu render.
Leider ist der Text nicht immer dargestellt, bzw. nur dann, wenn ein Resize kommt. Wenn die PictureBox aus dem Bildschirm und wieder zurück gezogen wird, ist der Text ebenfalls weg.
Ich suche eine Möglichkeit, den Text permanent dazustellen, wie z.B. in einem Label.
Code 1: Rendern des Textes (ist unvollständig, nur das Wichtigste)
Code 2: OnPaint
RenderText ist die Methode, in der unter anderem Code 1 ausgeführt wird.
ich schlage mich gerade mit dem Problem rum, dass ich einen Text mittels DrawString in eine PictureBox schreibe, ich tue dies, da ich den Text auch rotiert darstellen möchte.
Die PictureBox verwende ich, da ich einen Container zum zeichnen brauchte, sie ist beliebig ersetzbar.
Der Reihe nach:
Ich habe ein neues Windows Steuerelement erstellt, in diesem habe ich ein TableLayoutPanel platziert, welches zum einen meine PictureBox und zum anderen ein DataGridView beinhaltet.
Über eine Eigenschaft wird der Text festgelegt, der in die PictureBox gerendert werden soll.
Außerdem habe ich OnPaint überschrieben (Code folgt), wo ich den Text neu render.
Leider ist der Text nicht immer dargestellt, bzw. nur dann, wenn ein Resize kommt. Wenn die PictureBox aus dem Bildschirm und wieder zurück gezogen wird, ist der Text ebenfalls weg.
Ich suche eine Möglichkeit, den Text permanent dazustellen, wie z.B. in einem Label.
Code 1: Rendern des Textes (ist unvollständig, nur das Wichtigste)
C#:
Graphics g = control.CreateGraphics();
g.Clear(control.Parent.BackColor);
//Text ausgeben
g.DrawString(text, font, new SolidBrush(Color.Black), 0, 0);
Code 2: OnPaint
C#:
protected override void OnPaint(PaintEventArgs e)
{
RenderText(columnHeaderBox, _columnHeaderText, RotationAlignment.Normal);
}