引言
在PDF中我们可以通过C#程序代码来添加非常丰富的元素来呈现我们想要表达的内容,如绘制表格、文字,添加图形、图像等等。在本篇文章中,我将介绍如何在PDF中绘制图形,并设置图形属性的操作。
文章中将分以下要点进行介绍:
1. 绘制基本图形(线条、椭圆、圆形、矩形、三角形)
2. 绘制自定义图形
3. 绘制图形并设置图形透明度
【示例1】绘制基本图形
【C#】
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"); } } }
效果图:
【示例2】绘制自定义图形
【C#】
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、画刷2 PdfPen 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); } } }
效果图:
【示例3】设置色彩透明度
【C#】
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); //将基本色透明度设置为1 PdfSeparationColor 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"); } } }
效果图:
以上是关于C#绘制PDF图形的全部内容,如需转载,请注明出处!
(本文完)
相关推荐
C# 绘制各种图形代码
图形操作:选择、修改图形要素、修改图形要素大小、修改、undo、redo、旋转、移动旋转图形、复制、粘贴、剪切、编辑文字、修改线型(端点/中间加图形)、修改图形要素属性、上移、下移等操作。 事件:图形要素...
在C#编程环境中,绘制统计图形是一项常见的任务,特别是在数据可视化和分析中。C#提供了多种方式来创建柱状图、曲线图和饼状图,这些图表有助于将复杂的数据以直观的方式呈现出来。下面我们将详细探讨如何使用C#实现...
在C#编程环境中,我们可以利用GDI+(Graphics Device Interface Plus)库来绘制各种图形,包括扇形。GDI+是.NET Framework的一部分,提供了一系列的类和方法,用于创建和控制图形。本篇将深入探讨如何使用C#绘制扇形...
本书名为《C#二维三维图形绘制工程实例宝典》,是关于C#语言在图形绘制领域应用的综合性参考书籍。它详细地介绍了C#编程语言在处理二维和三维图形时的相关技术和工程实现方法。书籍内容由浅入深,共分为五个部分,...
在C#编程中,"绘制可拖动可平移图形"是一个常见的需求,尤其是在开发桌面应用或者游戏时。本教程将深入讲解如何实现这个功能,包括如何使用鼠标事件来绘制图形,以及如何实现图形的拖动和平移操作。 首先,我们需要...
3. `TrackDrawModeEditor.cs`:这个文件可能包含了一个自定义编辑器,用于在Visual Studio的设计环境中方便地配置TrackBar的绘制模式,可能包括其透明度和背景样式。 4. `TrackBarDrawItemEventArgs.cs`:这个文件...
本教程将深入探讨如何使用C#进行基本图形绘制,如矩形、圆形、直线,以及对这些图形进行选择、拉伸、缩放和平移的操作,并涉及直线的裁剪处理。 首先,让我们了解如何绘制基本图形。在C#中,我们通常在控件如...
在C#编程中,绘制图形和统计图是数据可视化的重要组成部分。这通常涉及到Windows Forms、WPF或ASP.NET等框架的应用,以及使用如GDI+(Graphics Device Interface Plus)这样的图形库。本教程将深入探讨如何在C#环境...
这些API提供了丰富的函数来绘制直线、曲线、填充区域等,并支持颜色、透明度和样式设置。 4. **鼠标交互**:用户界面是这类系统的重要组成部分,鼠标交互功能允许用户选择、修改和查看图形。在C#中,事件处理机制如...
在本教程中,我们将深入探讨如何使用C#来绘制这些基本图形,并实现不闪烁的效果,以提供更流畅的用户体验。 首先,要绘制图形,我们需要创建一个`Graphics`对象,它可以获取到一个窗口或图像的绘图表面。这通常可以...
3. **绘制自定义按钮**: C#中的控件可以通过重写`OnPaint`事件来改变其默认的绘制方式。为了显示自定义的背景图片,我们需要在`OnPaint`事件处理程序中使用`Graphics`对象来绘制图片。此外,可能还需要处理鼠标...
本项目“初学C#编写的绘制基本图形的小程序”是一个很好的起点,它教你如何利用C#来实现图形界面(GUI)并进行基本的图形绘制与操作。 首先,我们来探讨C#中的图形绘制。在C#中,我们可以使用Windows Presentation ...
总结来说,C#绘制八边形图形窗体涉及Windows Forms的图形绘制、窗体事件以及可能的自定义区域操作。通过以上步骤,你可以创建一个不仅能够显示八边形,还能实现变形效果的窗体。这为开发具有视觉吸引力和独特交互性...
总结起来,"c#自定义透明按钮控件"是C#编程中的一个实践案例,它展示了如何通过继承和自定义绘制来扩展系统控件,以满足特定设计或交互需求。通过这种方式,开发者可以创建出既美观又符合应用风格的用户界面。
在C#中,可以使用`Graphics`对象和自定义的图形类来实现这一功能,通过维护一个图形对象的列表,按照层的顺序进行绘制。 拖放操作是用户界面中的常见功能,它允许用户通过鼠标将一个图形元素从一处拖到另一处。在...
这个C#代码示例是关于在.NET环境中利用GDI+(Graphics Device Interface Plus)进行图形绘制的。GDI+是Windows应用程序用来创建和操作图形的一种API。在这个例子中,主要展示了如何创建和操作颜色、绘制矩形、以及...
在C#编程中,绘制坐标轴是创建图形用户界面(GUI)或数据分析应用时常见的需求。这涉及到在窗口上画出X轴和Y轴,通常用于表示数据的二维分布。以下将详细介绍C#中如何实现这个功能,并提供相关知识点。 首先,C#中...
在C#中,绘制图形是一项基础且强大的功能,它允许开发者创建自定义的用户界面、设计复杂的图表或者进行游戏开发等。本主题将深入探讨C#绘图的基础知识,包括如何使用GDI+(Graphics Device Interface Plus)库,以及...