引言

在PDF中我们可以通过C#程序代码来添加非常丰富的元素来呈现我们想要表达的内容,如绘制表格、文字,添加图形、图像等等。在本篇文章中,我将介绍如何在PDF中绘制图形,并设置图形属性的操作。

文章中将分以下要点进行介绍:

1. 绘制基本图形(线条、椭圆、圆形、矩形、三角形)

2. 绘制自定义图形

3. 绘制图形并设置图形透明度

所需工具:Spire.PDF for .NET 4.0

提示:安装后,直接引用安装路径下Bin文件夹中的dll文件到项目程序中即可。

【示例1】绘制基本图形

C#

步骤1:新建一个PDF文档,添加页,添加画笔、画刷

            //新建一个PDF文档,添加页PdfDocument doc = new PdfDocument();PdfPageBase page = doc.Pages.Add();//设置画笔和画刷PdfPen pen = new PdfPen(PdfBrushes.Black, 1f);PdfBrush brush1 = PdfBrushes.RosyBrown;PdfBrush brush2 = PdfBrushes.Goldenrod;

步骤2:绘制圆形、矩形、线段、三角形

            //绘入矩形(此处通过设置值来绘制成正方形)page.Canvas.DrawRectangle(pen, brush1, new Rectangle(new Point(50, 50), new Size(60, 60)));//绘入椭圆(此处通过设置值来绘制成圆形)page.Canvas.DrawEllipse(pen, brush2, 210, 50, 60, 60);//绘入线段page.Canvas.DrawLine(pen, new PointF(50, 115), new PointF(270, 115));//绘入多边形(此处绘制成三角形)PointF p1 = new PointF(130, 172);PointF p2 = new PointF(160, 120);PointF p3 = new PointF(190, 172);PointF[] points = new PointF[] { p1, p2, p3 };page.Canvas.DrawPolygon(pen, points);

步骤3:保存文档

            //保存并打开文档doc.SaveToFile("基本图形.pdf");System.Diagnostics.Process.Start("基本图形.pdf");

全部代码

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;namespace DrawRectangle_PDF
{class Program{static void Main(string[] args){        //新建一个PDF文档,添加页PdfDocument doc = new PdfDocument();PdfPageBase page = doc.Pages.Add();//设置画笔和画刷PdfPen pen = new PdfPen(PdfBrushes.Black, 1f);PdfBrush brush1 = PdfBrushes.RosyBrown;PdfBrush brush2 = PdfBrushes.Goldenrod;//绘入矩形(此处通过设置值来绘制成正方形)page.Canvas.DrawRectangle(pen, brush1, new Rectangle(new Point(50, 50), new Size(60, 60)));//绘入椭圆(此处通过设置值来绘制成圆形)page.Canvas.DrawEllipse(pen, brush2, 210, 50, 60, 60);//绘入线段page.Canvas.DrawLine(pen, new PointF(50, 115), new PointF(270, 115));//绘入多边形(此处绘制成三角形)PointF p1 = new PointF(130, 172);PointF p2 = new PointF(160, 120);PointF p3 = new PointF(190, 172);PointF[] points = new PointF[] { p1, p2, p3 };page.Canvas.DrawPolygon(pen, points);//保存并打开文档doc.SaveToFile("基本图形.pdf");System.Diagnostics.Process.Start("基本图形.pdf");}}
}

View Code

效果图:

【示例2】绘制自定义图形

步骤1:创建pdf文档,调用方法DrawStar()绘制自定义图形,并保存

            //新建一个PDF文档,添加页PdfDocument doc = new PdfDocument();PdfPageBase page = doc.Pages.Add();//调用DrawStar()方法绘入五角星图形
            DrawStar(page);//保存并打开文档doc.SaveToFile("自定义图形.pdf");System.Diagnostics.Process.Start("自定义图形.pdf");

步骤2:自定义DrawStar()方法绘制几个不同样式的五角星

 private static void DrawStar(PdfPageBase page){//设置五角星的5个顶点坐标PointF[] points = new PointF[5];for (int i = 0; i < points.Length; i++){float x = (float)Math.Cos(i * 2 * Math.PI / 5);float y = (float)Math.Sin(i * 2 * Math.PI / 5);points[i] = new PointF(x, y);}//创建PdfPath类,在顶点之间添加线段组成五角星PdfPath path = new PdfPath();path.AddLine(points[2], points[0]);path.AddLine(points[0], points[3]);path.AddLine(points[3], points[1]);path.AddLine(points[1], points[4]);path.AddLine(points[4], points[2]);//保存画布状态PdfGraphicsState state = page.Canvas.Save();//实例化画笔和画刷1、画刷2PdfPen pen = new PdfPen(Color.DeepSkyBlue, 0.02f);PdfBrush brush1 = new PdfSolidBrush(Color.PaleGreen);PdfBrush brush2 = new PdfSolidBrush(Color.Bisque);//将坐标放大40倍
            page.Canvas.ScaleTransform(40f, 40f);//平移坐标page.Canvas.TranslateTransform(1f, 1.5f);//绘入第一个五角星
            page.Canvas.DrawPath(pen, path);//平移坐标并在新的位置绘入第二个五角星
            page.Canvas.TranslateTransform(2f, 0f);path.FillMode = PdfFillMode.Alternate;page.Canvas.DrawPath(pen, brush1, path);//平移坐标并在新的位置绘入第三个五角星
            page.Canvas.TranslateTransform(2f, 0f);path.FillMode = PdfFillMode.Winding;page.Canvas.DrawPath(pen, brush2, path);//实例化画刷3,平移坐标并在新的位置绘入第四个五角星
            PdfLinearGradientBrush brush3= new PdfLinearGradientBrush(new PointF(-2, 0), new PointF(2, 0), Color.OrangeRed, Color.Yellow);page.Canvas.TranslateTransform(-4f, 2f);path.FillMode = PdfFillMode.Alternate;page.Canvas.DrawPath(pen, brush3, path);//实例化画刷4,平移坐标并在新的位置绘入第五个五角星
            PdfRadialGradientBrush brush4= new PdfRadialGradientBrush(new PointF(0f, 0f), 0f, new PointF(0f, 0f), 1f, Color.Orchid, Color.LightBlue);page.Canvas.TranslateTransform(2f, 0f);path.FillMode = PdfFillMode.Winding;page.Canvas.DrawPath(pen, brush4, path);//实例化画刷5,平移坐标并在新的位置绘入第六个五角星PdfTilingBrush brush5 = new PdfTilingBrush(new RectangleF(0, 0, 4f, 4f));brush5.Graphics.DrawRectangle(brush3, 0, 0, 4f, 4f);page.Canvas.TranslateTransform(2f, 0f);path.FillMode = PdfFillMode.Winding;page.Canvas.DrawPath(pen, brush5, path);//再次保存画布状态
            page.Canvas.Restore(state);}

全部代码:

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;namespace DrawCustomGraphics_PDF
{class Program{static void Main(string[] args){//新建一个PDF文档,添加页PdfDocument doc = new PdfDocument();PdfPageBase page = doc.Pages.Add();//调用DrawStar()方法绘入五角星图形
            DrawStar(page);//保存并打开文档doc.SaveToFile("自定义图形.pdf");System.Diagnostics.Process.Start("自定义图形.pdf");}//自定义DrawStar方法绘制几个不同样式的五角星private static void DrawStar(PdfPageBase page){//设置五角星的5个顶点坐标PointF[] points = new PointF[5];for (int i = 0; i < points.Length; i++){float x = (float)Math.Cos(i * 2 * Math.PI / 5);float y = (float)Math.Sin(i * 2 * Math.PI / 5);points[i] = new PointF(x, y);}//创建PdfPath类,在顶点之间添加线段组成五角星PdfPath path = new PdfPath();path.AddLine(points[2], points[0]);path.AddLine(points[0], points[3]);path.AddLine(points[3], points[1]);path.AddLine(points[1], points[4]);path.AddLine(points[4], points[2]);//保存画布状态PdfGraphicsState state = page.Canvas.Save();//实例化画笔和画刷1、画刷2PdfPen pen = new PdfPen(Color.DeepSkyBlue, 0.02f);PdfBrush brush1 = new PdfSolidBrush(Color.PaleGreen);PdfBrush brush2 = new PdfSolidBrush(Color.Bisque);//将坐标放大40倍
            page.Canvas.ScaleTransform(40f, 40f);//平移坐标page.Canvas.TranslateTransform(1f, 1.5f);//绘入第一个五角星
            page.Canvas.DrawPath(pen, path);//平移坐标并在新的位置绘入第二个五角星
            page.Canvas.TranslateTransform(2f, 0f);path.FillMode = PdfFillMode.Alternate;page.Canvas.DrawPath(pen, brush1, path);//平移坐标并在新的位置绘入第三个五角星
            page.Canvas.TranslateTransform(2f, 0f);path.FillMode = PdfFillMode.Winding;page.Canvas.DrawPath(pen, brush2, path);//实例化画刷3,平移坐标并在新的位置绘入第四个五角星
            PdfLinearGradientBrush brush3= new PdfLinearGradientBrush(new PointF(-2, 0), new PointF(2, 0), Color.OrangeRed, Color.Yellow);page.Canvas.TranslateTransform(-4f, 2f);path.FillMode = PdfFillMode.Alternate;page.Canvas.DrawPath(pen, brush3, path);//实例化画刷4,平移坐标并在新的位置绘入第五个五角星
            PdfRadialGradientBrush brush4= new PdfRadialGradientBrush(new PointF(0f, 0f), 0f, new PointF(0f, 0f), 1f, Color.Orchid, Color.LightBlue);page.Canvas.TranslateTransform(2f, 0f);path.FillMode = PdfFillMode.Winding;page.Canvas.DrawPath(pen, brush4, path);//实例化画刷5,平移坐标并在新的位置绘入第六个五角星PdfTilingBrush brush5 = new PdfTilingBrush(new RectangleF(0, 0, 4f, 4f));brush5.Graphics.DrawRectangle(brush3, 0, 0, 4f, 4f);page.Canvas.TranslateTransform(2f, 0f);path.FillMode = PdfFillMode.Winding;page.Canvas.DrawPath(pen, brush5, path);//再次保存画布状态
            page.Canvas.Restore(state);}}
}

View Code

效果图:

【示例3】设置色彩透明度

步骤1:新建一个PDF文档,添加页

            PdfDocument doc = new PdfDocument();PdfPageBase page = doc.Pages.Add();

步骤2:初始化一个PdfSeparationColorSpace的对象,用于创建基本色,并将基本色透明度设置为1

            PdfSeparationColorSpace cs1 = new PdfSeparationColorSpace("MySpotColor", Color.DarkGreen);PdfSeparationColorSpace cs2 = new PdfSeparationColorSpace("MySpotColor", Color.Yellow);PdfSeparationColorSpace cs3 = new PdfSeparationColorSpace("MySpotColor", Color.DeepPink);PdfSeparationColor color1 = new PdfSeparationColor(cs1, 1f);PdfSeparationColor color2 = new PdfSeparationColor(cs2, 1f);PdfSeparationColor color3 = new PdfSeparationColor(cs3, 1f);

步骤3:根据颜色创建画刷

            PdfSolidBrush brush1 = new PdfSolidBrush(color1);PdfSolidBrush brush2 = new PdfSolidBrush(color2);PdfSolidBrush brush3 = new PdfSolidBrush(color3);

步骤4:绘入图形及文字,应用色彩透明度到图形

           //绘入图形及文字并着色page.Canvas.DrawPie(brush1, 10, 30, 60, 60, 360, 360);page.Canvas.DrawPie(brush2, 10, 120, 60, 60, 360, 360);page.Canvas.DrawPie(brush3, 10, 210, 60, 60, 360, 360);page.Canvas.DrawString("透明度=1.0", new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true), brush1, new PointF(16, 100));//将基本色透明度设置为0.5,并绘入图形及文字color1 = new PdfSeparationColor(cs1, 0.5f);brush1 = new PdfSolidBrush(color1);page.Canvas.DrawPie(brush1, 80, 30, 60, 60, 360, 360);color2 = new PdfSeparationColor(cs2, 0.5f);brush2 = new PdfSolidBrush(color2);page.Canvas.DrawPie(brush2, 80, 120, 60, 60, 360, 360);color3 = new PdfSeparationColor(cs3, 0.5f);brush3 = new PdfSolidBrush(color3);page.Canvas.DrawPie(brush3, 80, 210, 60, 60, 360, 360);page.Canvas.DrawString("透明度=0.5", new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true), brush1, new PointF(86, 100));//将基本色透明度设置为0.25,并绘入图形及文字color1 = new PdfSeparationColor(cs1, 0.25f);brush1 = new PdfSolidBrush(color1);page.Canvas.DrawPie(brush1, 150, 30, 60, 60, 360, 360);color2 = new PdfSeparationColor(cs2, 0.25f);brush2 = new PdfSolidBrush(color2);page.Canvas.DrawPie(brush2, 150, 120, 60, 60, 360, 360);color3 = new PdfSeparationColor(cs3, 0.25f);brush3 = new PdfSolidBrush(color3);page.Canvas.DrawPie(brush3, 150, 210, 60, 60, 360, 360);page.Canvas.DrawString("透明度=0.25", new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true), brush1, new PointF(156, 100));

步骤5:保存文档

            doc.SaveToFile("设置透明度.pdf");System.Diagnostics.Process.Start("设置透明度.pdf");

全部代码:

using Spire.Pdf;
using Spire.Pdf.ColorSpace;
using Spire.Pdf.Graphics;
using System.Drawing;namespace CrearteSpotColor_PDF
{class Program{static void Main(string[] args){//新建一个PDF文档,添加页PdfDocument doc = new PdfDocument();PdfPageBase page = doc.Pages.Add();//初始化一个PdfSeparationColorSpace的对象,用于创建基本色PdfSeparationColorSpace cs1 = new PdfSeparationColorSpace("MySpotColor", Color.DarkGreen);PdfSeparationColorSpace cs2 = new PdfSeparationColorSpace("MySpotColor", Color.Yellow);PdfSeparationColorSpace cs3 = new PdfSeparationColorSpace("MySpotColor", Color.DeepPink);//将基本色透明度设置为1PdfSeparationColor color1 = new PdfSeparationColor(cs1, 1f);PdfSeparationColor color2 = new PdfSeparationColor(cs2, 1f);PdfSeparationColor color3 = new PdfSeparationColor(cs3, 1f);//根据颜色创建画刷PdfSolidBrush brush1 = new PdfSolidBrush(color1);PdfSolidBrush brush2 = new PdfSolidBrush(color2);PdfSolidBrush brush3 = new PdfSolidBrush(color3);//绘入图形及文字并着色page.Canvas.DrawPie(brush1, 10, 30, 60, 60, 360, 360);page.Canvas.DrawPie(brush2, 10, 120, 60, 60, 360, 360);page.Canvas.DrawPie(brush3, 10, 210, 60, 60, 360, 360);page.Canvas.DrawString("透明度=1.0", new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true), brush1, new PointF(16, 100));//将基本色透明度设置为0.5,并绘入图片及文字color1 = new PdfSeparationColor(cs1, 0.5f);brush1 = new PdfSolidBrush(color1);page.Canvas.DrawPie(brush1, 80, 30, 60, 60, 360, 360);color2 = new PdfSeparationColor(cs2, 0.5f);brush2 = new PdfSolidBrush(color2);page.Canvas.DrawPie(brush2, 80, 120, 60, 60, 360, 360);color3 = new PdfSeparationColor(cs3, 0.5f);brush3 = new PdfSolidBrush(color3);page.Canvas.DrawPie(brush3, 80, 210, 60, 60, 360, 360);page.Canvas.DrawString("透明度=0.5", new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true), brush1, new PointF(86, 100));//将基本色透明度设置为0.25,并绘入图片及文字color1 = new PdfSeparationColor(cs1, 0.25f);brush1 = new PdfSolidBrush(color1);page.Canvas.DrawPie(brush1, 150, 30, 60, 60, 360, 360);color2 = new PdfSeparationColor(cs2, 0.25f);brush2 = new PdfSolidBrush(color2);page.Canvas.DrawPie(brush2, 150, 120, 60, 60, 360, 360);color3 = new PdfSeparationColor(cs3, 0.25f);brush3 = new PdfSolidBrush(color3);page.Canvas.DrawPie(brush3, 150, 210, 60, 60, 360, 360);page.Canvas.DrawString("透明度=0.25", new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true), brush1, new PointF(156, 100));//保存并打开文档doc.SaveToFile("设置透明度.pdf");System.Diagnostics.Process.Start("设置透明度.pdf");}}
}

View Code

效果图:

以上是关于C#绘制PDF图形的全部内容,如需转载,请注明出处!

(本文完)

C# 绘制PDF图形——基本图形、自定义图形、色彩透明度相关推荐

  1. 基于matlab的能级_波函数及几率密度图形的绘制,基于MATLAB的能级波函数及几率密度图形的绘制.pdf...

    基于MATLAB的能级波函数及几率密度图形的绘制.pdf 第 卷 第 期 大 学 物 理 实 验 年 月 出版 壬 刃协 卫 印 文 章编 号 一 ' 一 一 基 于 的能级 . 波 函数 及 几 率 ...

  2. OSG使用OpenGL(以及glad库)绘制自定义图形

    简单记录一下在OSG中使用OpenGL函数(以及glad库)绘制自定义图形. 源码: #include <osgViewer/viewer> #include <osg/Geode& ...

  3. python如何画贝塞尔曲线_Python使用matplotlib实现绘制自定义图形功能示例

    本文实例讲述了Python使用matplotlib实现绘制自定义图形功能.分享给大家供大家参考,具体如下: 一 代码 from matplotlib.path importPath from matp ...

  4. matlab画二维图彩图,matlab二维图形绘制.pdf

    MATLAB 绘二维图 数据可视化的目的在于:通过图形,从一堆杂乱的离散数据中观察数 据间的内在关系,感受由图形所传递的内在本质. MATLAB 一向注重数据的图形表示,并不断地采用新技术改进和完备其 ...

  5. 软件项目技术点(7)——在canvas上绘制自定义图形

    AxeSlide软件项目梳理   canvas绘图系列知识点整理 图形种类 目前我们软件可以绘制出来的形状有如下这几种,作为开发者我们一直想支持用户可以拖拽的类似word里面图形库,但目前还没有找到比 ...

  6. visio自己画的图怎么填充_VISIO自定义图形填充

    有时候我们需要画一些特殊图形,比如以下这个 当然,如果你不嫌麻烦的画,可以画好一个之后复制粘贴,但显然这不是好主意,这时候就需要掌握VISIO自定义图形填充技巧. 第一步:打开绘图资源管理器(基于20 ...

  7. Python数据分析(三)matplotlib折线图应用实例——自定义图形风格

    往期推荐: Python数据分析(一)matplotlib基础绘图和调整x轴刻度 Python数据分析(二)matplotlib折线图应用实例--绘制10点到12点的气温 Python数据分析(四)m ...

  8. Qt使用C++封装qml自定义图形控件(QQuickPaintedItem)

    C++封装qml自定义图形控件 QtWidget.qml简介 通过继承QQuickPaintedItem封装控件 描述 公用接口定义 代码示例 效果图 QtWidget.qml简介 Qt提供了2套UI ...

  9. konva系列教程3:自定义图形

    大家好,我是前端西瓜哥. 我们来看下怎么用 kanva 绘制自定义图形. 现在我们要绘制一个菱形.所谓菱形,就是所有边相等的四边形. 我们需要传入 (x, y) 设置菱形的左上角,并用 width 和 ...

最新文章

  1. 树莓派修改密码(有单独屏幕)
  2. 有了这个工具,不执行代码就可以找PyTorch模型错误
  3. HttpModule与HttpHandler详解(转)
  4. Elasticsearch-映射
  5. mysql const ref_mysql explain详解
  6. Java:汇总堆外数据
  7. Java递归例子——求x的y幂次方
  8. .net mysql 序号_MYSQL如何自动为查询数据的结果编上序号详解
  9. android 横屏直播界面,Android安卓腾讯云互动直播随心播横屏的实现方式1.8.2
  10. CTF入门指南(Capture the flag)
  11. Linux学习之十一、环境变量的功能
  12. 使用遇到的问题_使用三防整理剂做织物整理会遇到这些问题...
  13. QTP是什么、QTP录制回放的原理、loadrunner、Selenium、QTP三者区别?QTP下载地址
  14. 游戏贪吃蛇计分c语言,C语言实现贪吃蛇游戏(命令行)
  15. 基于java实现学科竞赛管理系统「Springboot+mybatis+lyaui」
  16. Java 生成随机数并进行查找
  17. import * as用法
  18. 信号电缆与计算机电缆区别,控制电缆与计算机电缆有什么区别
  19. 电子邮件协议---SMTP,POP3,IMAP,MIME
  20. VBScript脚本运用(脚本程序与宿主程序的交互)

热门文章

  1. Topcomponent --sighoff
  2. 在远程桌面服务中配置RD网关直接访问内网
  3. spring-boot-starter家族成员简介
  4. Xcode 项目忽略警告
  5. thinkphp5部署于Linux中nginx多站点解决方案
  6. python连接mysql的操作
  7. hiho 第1周 最长回文子串
  8. corosync+pacemaker来实现http服务的高可用性
  9. 整数的二进制表示中 1 的个数
  10. Oracle DataGuard 之--Physical DG转换Logical DG