当前位置: 首页 > article >正文

C#基于SkiaSharp实现印章管理(8)

  上一章虽然增加了按路径绘制文本,支持按矩形、圆形、椭圆等路径,但测试时发现通过调整尺寸、偏移量等方式不是很好控制文本的位置。相对而言,使用弧线路径,通过弧线起始角度及弧线角度控制文本位置更简单。同时基于路径绘制文本时可以设置文本靠左、居中或靠右显示,也能调整文本位置。
  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


http://www.kler.cn/a/322276.html

相关文章:

  • C++系列之继承
  • 数据结构(一)链表
  • 【蓝桥杯C/C++】I/O优化技巧:cin.tie(nullptr)的详解与应用
  • Altenergy电力系统 status_zigbee SQL注入漏洞复现(CVE-2024-11305)
  • 如何在项目中用elementui实现分页器功能
  • CVE-2024-2961漏洞的简单学习
  • 这五本大模型书籍,让你从大模型零基础到精通,非常详细收藏我这一篇就够了
  • 【PyTorch】环境配置
  • MySQL 数据转换技巧:列转行与行转列
  • Redis支持数据类型,它们各自的应用场景是
  • 基于以太坊+IPFS的数据交易平台进行效率评估
  • MapReduce学习与理解
  • 14年408-计算机网络
  • 【Kubernetes】常见面试题汇总(三十九)
  • 图像分割(九)—— Mask Transfiner for High-Quality Instance Segmentation
  • 虚幻蓝图Ai随机点移动
  • 【数据结构取经之路】图解红黑树
  • OJ在线评测系统 代码沙箱优化模版方法模式 使用与有规范的流程 并且执行流程可以复用
  • LabVIEW软件出现Bug如何解决
  • Powerbi -l9-异常数据的处理
  • 23款小游戏源码,可学习、二次开发,可直接变更为微信小游戏抖音小游戏
  • PWA(Progressive web APPs,渐进式 Web 应用): manifest.json、 Service Worker
  • WebGL的25个应用案例,哪个你没想到?
  • OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【LMS调测】
  • Sqlite_Datetime列选择三月的行
  • ubuntu中如何查看类型(函数)定义的头文件