PDFSharp - Graphics
PDFSharp - Graphics
Graphics - PDFsharp and MigraDoc Wiki
所有的 Graphics 类型都设计成模仿来自 System.Drawing 命名空间中的 GDI+ 类型。类型的名称也类似,例如:XColor, XPen, XBrush, XGraphics, XRect, XMatrix, XImage 等等。它们的作用也与 GDI+ 中类似。所有的名称前面都有一个 X 前缀,使得它们在 GDI+ 和 WPF 类型中都可以使用相同的代码。
在 PDFSharp 中的 X 前缀的类型与 System.Drawing 中的类型存在如下区别:
- 所有的浮点类型都是 double 类型,以防止在 System.Drawing 中乏味的 float 类型转换
- X 前缀的类型和功能仅仅在 PDFSharp 中存在
在 WPF 版本的 PDFSharp 中,X 前缀的类型与 GDI+ 版本有着非常类似的接口,内部却基于 WPF 来实现。
1. Graphics 概念
XGraphics 类型表示绘图界面的接口。使用如下代码可以在 PDF 页面上绘图。
XGraphics gfx = XGraphics.FromPdfPage(page);
如果页面上已经存在内容 ( 例如页面来自已经存在的 PDF 文件 ),你可以选择使用 XGraphicsPdfPageOptions 来决定新绘制的对象是位于现有内容的上层还是下层。
在 GDI+ 版本的 PDFSharp 上,XGraphics 对象还可以在 System.Drawing.Graphics 对象上绘制。
XGraphics gfx = XGraphics.FromGraphics(graphics, size);
在 WPF 版本上,XGraphics 对象也可以在 System.Windows.Media.DrawingContext 对象上绘制。
XGraphics gfx = XGraphics.FromDrawingContext(drawingContext, size);
这使得使用 PDFSharp 有可能使用同样的函数在窗口、打印机、位图、或者 PDF 页面上进行绘制。
2. Coordinates 坐标系统
当前的 PDFSharp 实现只有一种图形布局系统。原点位于左上角,X 向右增长,Y 向下增长。测量的单位总是使用 point ( 1/72 英寸)。
这样并没有实际的局限,因为使用转换矩阵可以转换原点位置,或者缩放比例,你可以在 Transformation 中看到它的使用。使用 XUnit 类型,你可以在 point、英寸、厘米和毫米之间进行转换。
3. 直线和曲线
类型 XGraphics 提供如下的函数绘制直线和曲线:
- DrawLine
- DrawLines
- DrawBezier
- DrawBeziers
- DrawCurve
- DrawArc
每种函数都使用 XPen 来定义如何绘制.
4. 图形 Shapes
类型 XGraphics 提供如下函数绘制预先定义的图形:
- DrawRectangle
- DrawRectangles
- DrawRoundedRectangle
- DrawEllipse
- DrawPolygon
- DrawPie
- DrawClosedCurve
每个函数可以使用 XPen (仅限笔触),或者画刷 XBrush (仅限填充),或者同时使用两者。(笔触和填充)。
5. Graphical 路径
类型 XGraphicalPath 表示绘图路径。类型 XGraphics 提供如下函数绘制路径:
- DrawPath
该函数可以使用 XPen (仅限笔触),或者画刷 XBrush (仅限填充),或者同时使用两者。(笔触和填充)。
6. Fonts 字体
当前的 PDFSharp 实现支持 TrueType 字体和使用 TrueType 轮廓的 OpenType 字体,也就是说,使用 Microsoft Windows 的字体。
使用 XFont 类型来创建字体
XFont font = new XFont("Verdana", 12, XFontStyle.Italic);
类型 XPdfFontOptions 设置 PDF 特定的设置:
- 使用 ANSI 还是 Unicode 编码
- 在 PDF 文档内部,使用嵌入字体,还是使用字体的子集
7. Text 文本
类型 XGraphics 提供如下函数来使用文本:
- MeasureString
- DrawString
函数 DrawString 拥有一个 XStringFormat 参数,可以用来进行文本对齐。 DrawString 函数是一个基本函数,没有用于包装的功能。使用 MigraDoc foundation 可以在段落中使用各种字体、尺寸对文本进行格式化等等。示例见:Mix MigraDoc and PDFsharp
8. Images 图片
类型 XGraphics 提供如下函数绘制图片:
- DrawImage
PDFsharp 支持如下图片格式:
- BMP
- GIF (with optional transparency)
- PNG (with optional transparency)
- JPEG
- TIFF (with optional transparency)
9. Graphics State
类型 XGraphics 提供如下函数来保存和恢复当前的绘制状态:
- Save
- Restore
- BeginContainer
- EndContainer
在执行转换和剪切功能之前,使用这些函数来保存绘制状态,并在以后恢复之前的转换和剪切状态。使用 BeginContainer 函数,你可以指定两个额外的矩形来为你计算映射,例如将第一个矩形映射到第二个矩形。这可以使得易于定义新的坐标系统。
10. Transformation
类型 XGraphics 提供如下函数进行坐标系统转换:
- TranslateTransform
- ScaleTransform
- RotateTransform
- MultiplyTransform
- AddTransform
通过将其与 XMatrix 对象相乘,转换将立即在当前绘图上下文生效。使用 XMatrixOrder 来选择该转换时追加还是插入到当前转换。
使用 Save / Restore 来保持当前的转换。
11. Clipping
类型 XGraphics 提供如下函数来限制当前的剪切区域:
- IntersectClip
在剪切区域之外的文本和图形将不会显示。
使用 Save / Restore 来保持当前的转换。
12. Miscellaneous 杂项
类型 XGraphics 提供如下杂项函数:
- WriteComment
- Internals
原文地址:Graphics - PDFsharp and MigraDoc Wiki
PDFSharp - Graphics的更多相关文章
- create pdf file using Spire.Pdf or iTextSharp or PdfSharp
Spire.Pdf: 注:pdf 显示中文一定要设置相应的中文字体,其他外文类似.否则显示为乱码( 如果繁体的服务器上生成的中文内容PDF文档,在简体操作系统保存或并传给简体系统上查看,会存在乱码问题 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译
本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- java工具类之Graphics
利用重写paint()方法绘画出一个坐标轴: package huaxian; import java.awt.Color; import java.awt.FlowLayout; import ja ...
- 解决C# WinForm Graphics绘制闪烁问题
不直接使用form的CreateGraphics创建Graphics进行绘制,可以先在Form上面放一个需要大小的PictureBox,再创建一个同大小的Bitmap,将这个Bitmap设置为Pict ...
- [译]Modern Core Graphics with Swift系列
第一篇 想象一下你已经完成了你的app并且运行的很好,但是界面看上去太土,你可以在PS里面画好多不同尺寸的自定义控件,Apple并没有4x的retina屏幕. 或者你已经未雨绸缪,在代码中使用Core ...
- 《3D Math Primer for Graphics and Game Development》读书笔记2
<3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记1
<3D Math Primer for Graphics and Game Development>读书笔记1 本文是<3D Math Primer for Graphics and ...
- C#使用Graphics画圆写字
画填充圆: Graphics gra = this.pictureBox1.CreateGraphics(); gra.SmoothingMode = System.Drawing.Drawing2D ...
- .net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
在.net下,如果你加载了一副8位的灰度图像,然后想向其中绘制一些线条.或者填充一些矩形.椭圆等,都需要通过Grahpics.FromImage创建Grahphics对象,而此时会出现:无法从带有索引 ...
随机推荐
- 生成系统中的maven依赖信息
在项目终端直接执行命令 mvn project-info-reports:dependencies 等待文件生成... 生成信息如下...
- 何为ORM框架?和ADO.NET 对比
百度:ORM(Object Relational Mapping)框架采用元数据来描述对象与关系映射的细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中.简单理解为一种框架的格式 . 只 ...
- 现在 Llama 具备视觉能力并可以在你的设备上运行 - 欢迎使用 Llama 3.2
Llama 3.2 来了!今天,我们欢迎 Llama 系列的下一个版本加入 Hugging Face.这次,我们很高兴与 Meta 合作发布多模态和小型模型.在 Hub 上提供了十个开源模型 (5 个 ...
- Python实现火柴人的设计与实现
1.引言 火柴人(Stick Figure)是一种极简风格的图形,通常由简单的线段和圆圈组成,却能生动地表达人物的姿态和动作.火柴人不仅广泛应用于动画.漫画和涂鸦中,还可以作为图形学.人工智能等领域的 ...
- synchronized的四种锁状态
Java 多线程的锁都是基于对象的,Java 中的每一个对象都可以作为一个锁. 类锁,其实就是 Class 对象的锁. Class 对象是一种特殊的 Java 对象,代表了程序中的类和接口.Java ...
- linux环境nginx配置记录
nginx环境安装 1.联网下载 pcre压缩包 解压压缩文件使用命令 tar –xvf pcre-8.37.tar.gz ./configure 完成后,回到 pcre 目录下执行 make,最后执 ...
- Linux 基础-查看进程命令 ps 和 top
目录 1,使用 ps 命令找出 CPU 占用高的进程 2,通过 top 命令定位占用 cpu 高的进程 3,htop 系统监控与进程管理软件 4,参考资料 1,使用 ps 命令找出 CPU 占用高的进 ...
- 用文字“画出”时序图:用 AI+Mermaid.js 解决交互过程中的问题
什么是时序图 序列图是一种用于描述对象之间在时间上的交互顺序的图表. 它可以展示对象之间是如何相互作用的,以及这些交互的顺序. 什么是Mermaid Mermaid.js是一个开源项目,它允许你通过简 ...
- 2024年全国大学生信息安全竞赛安徽省赛-WP
2024年全国大学生信息安全竞赛安徽省赛-WP 没有re,不会...... 0X01 初赛(CTF) MISC 图像损坏 损坏的GIF文件,补上缺失的文件头 用puzz拆分GIF,得到多个图片 ...
- Python随笔之英雄联盟皮肤、炫彩爬取练习
翻了网上爬皮肤的帖子,很多都是爬英雄的皮肤,没有获取到炫彩皮肤的文件 以下代码就是先获取所有的英雄id,再拼接成新的链接再遍历 把获取到的数据保存CSV文件到本地 (之前从事过游戏账号交易行业,还有很 ...