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

问题描述

我正在使用Win2D开发UWP应用程序,并且需要使用CanvasControl Drawing会话旋转文本。我用df['Number of Calls'] = df['Number of Calls'].astype(str) df.groupby('Time',as_index=False).agg({'Call':sum,'Number of Calls':','.join}) Time Call Number of Calls 0 2020-09-02-15:01:46 1 1 1 2020-09-02-15:01:47 1 2 2 2020-09-02-15:01:48 2 3,4 渲染文本。

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

解决方法

在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,Colors.Red);
}

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

值得一提的是,Matrix3x2.CreateRotation的参数以弧度为单位。如果您想表达角度,则需要进行转换。

此处的旋转中心位于画布的左上角,如果您需要自定义旋转中心,则可以这样编写:

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