| 

.NET C# Java Javascript Exception

4
Wie kann ich unter GDI+ Text in einem vorgegebenen rechteckigen Bereich um einen beliebigen Winkel (0 bis 360 Grad) so ausgeben, das die Drehung nicht bezogen auf den rechteckigen Bereich, sondern bezogen auf den Textmittelpunkt (halbe Textbreite/halbe Texthöhe) gedreht wird? Also wenn ein Text zentriert in einem Grafikbereich ausgegeben wird, muss der Text auch mittig zentriert und optional gedreht werden, wobei die Textposition und der Winkel anzugeben sind. Die Positionierung eines Textes anhand einer variablen Textgröße habe ich in einer gesonderten Frage formuliert. Soviel ich weiß, gibt es keine GDI+-Methode, die eine entsprechende Funktion bietet und man soll Grafikbereiche transformieren/drehen. Hat das aber nicht auch Auswirkung auf alle anderen Grafikelemente, die sich im besagten Grafikbereich befinden? Gibt es vielleicht einen alternativen Weg für eine solche Umsetzung?
News:
04.09.2013
Volker Nemm 391 1 7
1 Antwort
1
Effektiv drehst Du nicht ein einzelnes Element, sondern Du drehst das zugrundeliegende Koordinatensystem. Das geht über die Graphics.RotateTransform Methode. Zum Zurücksetzen des Koordinatensystems nutzt Du die Graphics.ResetTransform Methode.

Wie ich in der anderen Frage bereits erwähnt habe, nutzt Du die StringFormat Klasse für formatierte Textausgabe. Es existieren Überladungen der MeasureString Methode, die auch einen StringFormat Parameter haben. Du erhältst dann eine Size, die die Größe des formatierten String enthält. Danach transformierst Du das KO System mit TranslateTransform auf den Mittelpunkt gewünschten Mittelpunkt Deines Textes, danach drehst Du das KO System mit RotateTransform und zeichnest den Text (so grob aus der Hüfte... :-)

Viel Erfolg.
04.09.2013
ffordermaier 8,4k 3 9
Gibt es die Methoden wie in den Links angegeben nur in .NET 4.5 oder auch früher? Und wenn es nicht in früheren Versionen geht, welche Alternativen gibt es?
Volker Nemm 05.09.2013
Geht ab .NET 2.0, danke :-).
Volker Nemm 05.09.2013
Dank des Hinweises habe ich jetzt ein beispiel in VB.NET gefunden: http://www.vbarchiv.net/forum/read.php?id=22&t=81958&i=81958&v=f
Volker Nemm 05.09.2013

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH