Wpf 文本旋转
Wpf text rotation
我想在 canvas 上添加一些文本,并决定为此使用 textBlock
(设置字体等)
但我不知道如何旋转它。
我使用以下函数在 myCanvas
上添加 myText
:
void text(double x_pos, double y_pos, string myText, double angle, Point rot_cen, Color color1)
{
TextBlock textBlock = new TextBlock()
{
Text = myText,
FontFamily = new FontFamily("Verdana"),
FontSize = 16,
TextAlignment = TextAlignment.Center
};
textBlock.Foreground = new SolidColorBrush(color1);
Canvas.SetLeft(textBlock, x_pos);
Canvas.SetTop(textBlock, y_pos);
textBlock.RenderTransform = new RotateTransform(angle, rot_cen.X, rot_cen.Y);
myCanvas.Children.Add(textBlock);
}
根据我的阅读,rot_cen
是从 (0,0)(左上角)到 (1,1)(右下角)的点。但是当我将它设置为 (0.5,0.5) 时,它仍然围绕左上角旋转。我需要以某种方式更新它吗?
RotateTransform 的 CenterX
和 CenterY
属性使用绝对坐标。
您可能要设置RenderTransformOrigin
,它使用相对坐标:
textBlock.RenderTransformOrigin = rot_cen;
textBlock.RenderTransform = new RotateTransform(angle);
我想在 canvas 上添加一些文本,并决定为此使用 textBlock
(设置字体等)
但我不知道如何旋转它。
我使用以下函数在 myCanvas
上添加 myText
:
void text(double x_pos, double y_pos, string myText, double angle, Point rot_cen, Color color1)
{
TextBlock textBlock = new TextBlock()
{
Text = myText,
FontFamily = new FontFamily("Verdana"),
FontSize = 16,
TextAlignment = TextAlignment.Center
};
textBlock.Foreground = new SolidColorBrush(color1);
Canvas.SetLeft(textBlock, x_pos);
Canvas.SetTop(textBlock, y_pos);
textBlock.RenderTransform = new RotateTransform(angle, rot_cen.X, rot_cen.Y);
myCanvas.Children.Add(textBlock);
}
根据我的阅读,rot_cen
是从 (0,0)(左上角)到 (1,1)(右下角)的点。但是当我将它设置为 (0.5,0.5) 时,它仍然围绕左上角旋转。我需要以某种方式更新它吗?
RotateTransform 的 CenterX
和 CenterY
属性使用绝对坐标。
您可能要设置RenderTransformOrigin
,它使用相对坐标:
textBlock.RenderTransformOrigin = rot_cen;
textBlock.RenderTransform = new RotateTransform(angle);