Grafik-Knobelei

15/10/2008 - 11:34 von Frank Bach | Report spam
Hallo !

Ich zeichne ein Quadrat.
In dieses Quadrat soll von links unten ein Text (DrawString) im 45 Grad
winkel nach rechts oben gehen.
Ok, das geht schon alles.
Nur: ist der Text lànger als die Diagonale innerhalb des Quadrats, soll der
Text rechts abgeschnitten werden.
Aber: ist der Text kürzer als die Diagonale, soll der Text bündig mit dem
rechten oberen Punkt abschließen, d.h. der Text beginnt nicht in der linken
unteren Ecke des Qudrats sondern irgendwo mittendrin.

Làßt sich sowas realisieren?

Danke!

Frank
 

Lesen sie die antworten

#1 Karsten Sosna
15/10/2008 - 12:36 | Warnen spam
Ich zeichne ein Quadrat.
In dieses Quadrat soll von links unten ein Text (DrawString) im 45 Grad
winkel nach rechts oben gehen.
Ok, das geht schon alles.
Nur: ist der Text lànger als die Diagonale innerhalb des Quadrats, soll
der Text rechts abgeschnitten werden.
Aber: ist der Text kürzer als die Diagonale, soll der Text bündig mit dem
rechten oberen Punkt abschließen, d.h. der Text beginnt nicht in der
linken unteren Ecke des Qudrats sondern irgendwo mittendrin.

Làßt sich sowas realisieren?


Hallo Frank,
ja natürlich. Aber erstmal "beißt" sich Deine Darstellung. Ist der Text
kürzer soll er rechtsbündig sein. Ist der Text lànger soll er rechts
abgeschnitten werden? Nee, eigentlich müsste das links sein. Naja nichts
desto trotz.
Ausgabe rechtsbündig
\\\
Dim layrect As New Rectangle(20, 20, 80, 20)
Dim text = "Das ist ein langer Text"
e.Graphics.FillRectangle(Brushes.Yellow, layrect)
TextRenderer.DrawText(e.Graphics, text, Me.Font, layrect, Color.Black,
TextFormatFlags.Right Or TextFormatFlags.VerticalCenter)
///
Und für rechts abgeschnitten(also links ausgerichtet):
\\\
Dim layrect As New Rectangle(20, 20, 80, 20)
Dim text = "Das ist ein langer Text"
e.Graphics.FillRectangle(Brushes.Yellow, layrect)
TextRenderer.DrawText(e.Graphics, text, Me.Font, layrect, Color.Black,
TextFormatFlags.Left Or TextFormatFlags.VerticalCenter)
///
Die TextRenderer-Klasse ist hier besser beeignet als die
[Graphics].DrawString-Methode in der Überladung mit StringFormat.
Das Layout-Rectangle musst Du dann nur berechnen, ist aber kein Problem. ;=)
Gruß Scotty

Ähnliche fragen