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

  前几篇文章实现了绘制不同外形印章的功能,印章内部一般包含圆形、线条等形状,有些印章内部还有五角星,然后就是各种样式的文字。本文实现在印章内部绘制圆形、线条、矩形、椭圆等四种形状。
  定义FigureType枚举记录印章内部形状,同时定义DrawMode枚举形状绘制方式(边框或底色,暂不处理绘制边框+底色的情况)。

public enum FigureType
{
    Rect=0,
    Line=1,
    Circle = 2,
    Oval = 3,
    Text=4
}

public enum DrawMode
{
    Border=0,
    BackGround=1
}

  定义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>
    /// 印章背景色,默认白色
    /// </summary>
    public SKColor FigureBgColor { get; set; } = SKColors.White;

    /// <summary>
    /// 形状起始位置,不同形状保存的值意义不同
    /// </summary>
    public SKPoint StartPoint { get; set; } = new SKPoint(0, 0);

    /// <summary>
    /// 形状结束位置,不同形状保存的值意义不同
    /// </summary>
    public SKPoint EndPoint { get; set; } = new SKPoint(0, 0);

    /// <summary>
    /// 形状边框宽度
    /// </summary>
    public float FigureBorderWidth { get; set; } = 1;

    /// <summary>
    /// 印章边框,默认红色
    /// </summary>
    public SKColor FigureBorderColor { get; set; } = SKColors.Red;

    /// <summary>
    /// 形状绘制模式
    /// </summary>
    public DrawMode DrawMode { get; set; } = DrawMode.Border;
}

  编写维护线条、矩形、圆形、椭圆形状的属性编辑窗口,如下图所示:
在这里插入图片描述
  调整印章设计主界面,在菜单栏增加新建线条、矩形、圆形、椭圆菜单,在窗口右侧增加列表显示在印章中添加的形状列表,单击某一行会在窗口中通过变粗或变色显示选中形状。双击某一行则为编辑形状。
  使用的绘图函数还是SkiaSharp中SKCanvas的DrawLine、DrawRect、DrawCircle、DrawOval等,在此不再赘述。最后是程序运行效果,如下图所示:

在这里插入图片描述
在这里插入图片描述

参考文献:
[1]https://learn.microsoft.com/zh-cn/dotnet/api/skiasharp?view=skiasharp-2.88

相关推荐

  1. 画布与印章C++

    2024-07-23 09:38:01       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 09:38:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 09:38:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 09:38:01       45 阅读
  4. Python语言-面向对象

    2024-07-23 09:38:01       55 阅读

热门阅读

  1. ArcGIS Pro SDK (九)几何 12 多面体

    2024-07-23 09:38:01       13 阅读
  2. 数据库连接池

    2024-07-23 09:38:01       15 阅读
  3. RKNN执行bash ./build-linux_RK3566_RK3568.sh 报错

    2024-07-23 09:38:01       14 阅读
  4. 数学建模--图论与最短路径

    2024-07-23 09:38:01       15 阅读
  5. mariadb安装在服务器(Linux)

    2024-07-23 09:38:01       15 阅读
  6. 银行卡二三四要素核验的多种应用场景

    2024-07-23 09:38:01       18 阅读
  7. 怎么在 Ubuntu 中卸载已经安装的软件

    2024-07-23 09:38:01       16 阅读
  8. ubuntu 源码安装postgis插件

    2024-07-23 09:38:01       17 阅读
  9. SpringCloud-Zuul-03

    2024-07-23 09:38:01       18 阅读
  10. uniapp picker-view 搜索选择框

    2024-07-23 09:38:01       17 阅读