如何使用 CanvasControl 绘图会话在 Win2D 中旋转文本?

How to rotate text in Win2D using CanvasControl drawing session?

我正在使用 Win2D 开发 UWP 应用程序,我需要使用 CanvasControl 绘图会话来旋转文本。我使用 public void DrawText(string text, Vector2 point, Color color) 渲染文本。

如何将文本旋转到任意角度?

在Win2D中,旋转文字可以通过设置CanvasDrawingSession.Transform来实现。

private void CanvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)
{
    CanvasDrawingSession ds = args.DrawingSession;
    ds.Transform = Matrix3x2.CreateRotation(GetRadians(30));
    ds.DrawText("Hello Win2D!", 10, 10, Colors.Red);
}

private float GetRadians(double angle)
{
    return (float)(Math.PI * angle / 180.0);
}

值得一提的是Matrix3x2.CreateRotation的参数是以弧度为单位的。如果喜欢用角度表示,需要转换。

这里的旋转是以canvas的左上角为中心,如果需要自定义旋转中心,可以这样写:

ds.Transform = Matrix3x2.CreateRotation(GetRadians(30),new Vector2(30,30));