问题描述
我正在使用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));