沧州网站推广,深圳个人网站建设,做网站价钱,腾讯邮箱邮箱入口前几篇文章实现了绘制不同外形印章的功能#xff0c;印章内部一般包含圆形、线条等形状#xff0c;有些印章内部还有五角星#xff0c;然后就是各种样式的文字。本文实现在印章内部绘制圆形、线条、矩形、椭圆等四种形状。 定义FigureType枚举记录印章内部形状#xff… 前几篇文章实现了绘制不同外形印章的功能印章内部一般包含圆形、线条等形状有些印章内部还有五角星然后就是各种样式的文字。本文实现在印章内部绘制圆形、线条、矩形、椭圆等四种形状。 定义FigureType枚举记录印章内部形状同时定义DrawMode枚举形状绘制方式边框或底色暂不处理绘制边框底色的情况。
public enum FigureType
{Rect0,Line1,Circle 2,Oval 3,Text4
}public enum DrawMode
{Border0,BackGround1
}定义SealElement类型保存不同形状所需的各类参数主要包括 1线条StartPoint 、EndPoint 记录端点坐标没有底色仅需按线宽和颜色绘制直线即可 2矩形StartPoint记录左上角坐标EndPoint记录矩形宽和高 3圆形StartPoint记录中心点坐标EndPoint的X坐标记录半径 4椭圆StartPoint记录中心点坐标EndPoint的X坐标记录x方向半径Y坐标记录y方向半径。 除线条之外以边框形式绘制其它形状计算尺寸时都需要考虑线宽。
public class SealElement
{public FigureType FigureType { get; set; } FigureType.Rect;/// summary/// 印章背景色默认白色/// /summarypublic SKColor FigureBgColor { get; set; } SKColors.White;/// summary/// 形状起始位置不同形状保存的值意义不同/// /summarypublic SKPoint StartPoint { get; set; } new SKPoint(0, 0);/// summary/// 形状结束位置不同形状保存的值意义不同/// /summarypublic SKPoint EndPoint { get; set; } new SKPoint(0, 0);/// summary/// 形状边框宽度/// /summarypublic float FigureBorderWidth { get; set; } 1;/// summary/// 印章边框默认红色/// /summarypublic SKColor FigureBorderColor { get; set; } SKColors.Red;/// summary/// 形状绘制模式/// /summarypublic DrawMode DrawMode { get; set; } DrawMode.Border;
}编写维护线条、矩形、圆形、椭圆形状的属性编辑窗口如下图所示 调整印章设计主界面在菜单栏增加新建线条、矩形、圆形、椭圆菜单在窗口右侧增加列表显示在印章中添加的形状列表单击某一行会在窗口中通过变粗或变色显示选中形状。双击某一行则为编辑形状。 使用的绘图函数还是SkiaSharp中SKCanvas的DrawLine、DrawRect、DrawCircle、DrawOval等在此不再赘述。最后是程序运行效果如下图所示
参考文献: [1]https://learn.microsoft.com/zh-cn/dotnet/api/skiasharp?viewskiasharp-2.88