Laden...

[GELÖST]Label auf Canvas drehen

Erstellt von Camouflagezebra vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.175 Views
C
Camouflagezebra Themenstarter:in
10 Beiträge seit 2010
vor 11 Jahren
[GELÖST]Label auf Canvas drehen

Hallo,

Ich würde gerne ein Label auf meinem Canvas drehen, jedoch weiß ich nicht wie.

Im Internet habe ich nur Beschreibungen gefunden, bei denen ich es explizit in ein Graphic umwandeln muss, was für mich aber nicht gerade vorteilhaft wird, da meine Labels später in XML gespeichert werden und sie deshalb Labels bleiben sollten.

Kann man das auf einer Canvas nicht irgendwie anders drehen?
Freue mich über jede Hilfe!

mfg
zebra

6.862 Beiträge seit 2003
vor 11 Jahren

Hallo,

Per Render- oder LayoutTransform kannst du das problemlos machen.

da meine Labels später in XML gespeichert werden

Du solltest die Daten, welche die Labels anzeigen, speichern, aber nie GUI Elemente (geht auch nicht wirklich).

Baka wa shinanakya naoranai.

Mein XING Profil.

C
Camouflagezebra Themenstarter:in
10 Beiträge seit 2010
vor 11 Jahren

Mache ich es so falsch?


<Measure> 
       <Left>239</Left> 
       <Top>152</Top> 
       <Content><String xmlns="clr-namespace:System;assembly=mscorlib">122</String></Content> 
</Measure>

Left und Top sind für die Koordinaten.

Edit:

talla, danke für die Hilfe!

Ich habe das Problem in 2 Zeilen lösen können.


RotateTransform rotate = new RotateTransform(270);
label.RenderTransform = rotate;

Der einzige Schönheitsfehler den es jetzt noch geben würde, ist dass es sich um die 0,0-Koordinate des Labels dreht.

Wie kann ich sie um den Mittelpunkt des Labels drehen? (Mittelpunkt ist bei jedem Label durch Schriftgröße und Zeichenkette verschieden)

So geht es nicht:


RotateTransform roate = new RotateTransform(270, label.Width / 2, label.Height / 2);

Edit2:

Problem komplett gelöst!


RotateTransform rotate = new RotateTransform(270);
label.RenderTransformOrigin = new Point(0.5, 0.5);
label.RenderTransform = rotate;

Mithilfe von RenderTransformOrigin kann der Mittelpunkt eines Elementes für die Drehung gefunden werden.
Der Point muss für X und Y einen Wert zwischen 0 und 1 haben (Demnach ist 0.5 genau die Hälfte)

Kann geclosed werden. Danke nochmal für die Hilfe, talla 😃