上一章虽然增加了按路径绘制文本,支持按矩形、圆形、椭圆等路径,但测试时发现通过调整尺寸、偏移量等方式不是很好控制文本的位置。相对而言,使用弧线路径,通过弧线起始角度及弧线角度控制文本位置更简单。同时基于路径绘制文本时可以设置文本靠左、居中或靠右显示,也能调整文本位置。
   SKPath的添加弧线函数原型如下,主要是设置包含弧线的椭圆的外接矩形,同时设置弧线的起始角度及圆弧角度。
 //   oval:
 //     The bounds of oval used to define the size of the arc.
 //
 //   startAngle:
 //     Starting angle (in degrees) where the arc begins.
 //
 //   sweepAngle:
 //     Sweep angle (in degrees) measured clockwise.
 public unsafe void AddArc(SKRect oval, float startAngle, float sweepAngle)
 
  调整SealElement类定义,增加文本对齐属性(类型为SKTextAlign),绘制弧线时的起始角度及弧线角度值保存到之前定义的FontStartPoint属性内(沿路径绘制文本时该属性用不上)。
   调整新建/编辑文本窗口,增加文本对齐方式、起始角度及弧线角度等控件,如下图所示:
 
调整绘图文本函数,增加添加圆弧路径及设置文本对齐的代码,主要调整如下:
if (element.IsAlongPath)
{
    skPaint.TextAlign = element.TextAlign;
    ...
    ...
    switch(element.PathType)
    {
        ...
        ...
        case FigureType.Arc:
            textPath.AddArc(new SKRect(unitSize * element.StartPoint.X,
                                        unitSize * element.StartPoint.Y,
                                        unitSize * (element.StartPoint.X + element.EndPoint.X),
                                        unitSize * (element.StartPoint.Y + element.EndPoint.Y)),
                                        element.FontStartPoint.X, element.FontStartPoint.Y);
            break;
    }
   ...
   ...
}
 
  最后是绘制效果及导出为图片的效果。
 

至此,印章设计功能暂告一段落,后续印章管理的功能设计及开发会转向印章创建及管理、给图片/pfd文件盖章等方面,同时也会找一些开源网页设计项目,学习将印章设计功能转为网页实现。
参考文献:
 [1]https://learn.microsoft.com/zh-cn/dotnet/api/skiasharp?view=skiasharp-2.88
 [2]https://www.cnblogs.com/bhnian/p/16343557.html
 [3]https://www.jb51.net/html5/676291.html
 [4]https://blog.csdn.net/L_Shaker/article/details/127313457



















