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 绘制接口的更多相关文章
- WinForms 使用Graphics绘制字体阴影
C#以两种方法实现文字阴影效果,同时还实现了简单的动画效果: 一种是对文本使用去锯齿的边缘处理,在两个不同的位置绘制文本,形成阴影: 另一个是以阴影为线条,构造影线画刷,先画背景再画前景,使用grap ...
- 【转】WinForms 使用Graphics绘制字体阴影
转自:http://www.cnblogs.com/LonelyShadow/p/3893743.html C#以两种方法实现文字阴影效果,同时还实现了简单的动画效果: 一种是对文本使用去锯齿的边缘处 ...
- iOS圆角view的Swift实现(利用Core Graphics绘制)
iOS圆角view的Swift实现(利用Core Graphics绘制) 因为app的列表用用到了圆形图片的头像,所以去探究并思考了一下这个问题.首先这个问题有两个方向的解决方案: 把图片弄成圆形的. ...
- 解决C# WinForm Graphics绘制闪烁问题
不直接使用form的CreateGraphics创建Graphics进行绘制,可以先在Form上面放一个需要大小的PictureBox,再创建一个同大小的Bitmap,将这个Bitmap设置为Pict ...
- Graphics绘制类及打印机设置相关
Graphics 有两个多个方法 这里面介绍3个: 1.Graphics.drawString():绘制.画字符串........... e.Graphics.DrawString("新乡市 ...
- Graphics绘制图形
List<double> labels = form.channelData2[kp.Key]; List<double> listY = kp.Value; int labe ...
- OpenGL7-1-快速绘制接口(使用高效的函数接口进行绘制)
代码下载 #include "CELLWinApp.hpp"#include <gl/GLU.h>#include <assert.h>#include & ...
- 用Html5制作的一款数学教学程序Function Graphics(绘制函数图的程序)
最近我不仅对游戏开发感兴趣,还对函数图感兴趣,特此我开发了这个程序.以下是一些介绍和下载演示地址,喜欢的朋友可以看看: 一,产品名片 产品名:Function Graphics 版本: 0.1 开发者 ...
- 像Linq一样来使用Graphics
Linq的链式编程用起来总是那样畅快淋漓,可惜在C#中并不是每时每刻都能有这么畅快的感觉,其中使用Graphics的时候就是,每次用Graphics绘制大量图形时尤其如此.GDI+的API功能很强大, ...
- Android中贝塞尔曲线的绘制方法
贝塞尔曲线,很多人可能不太了解,什么叫做贝塞尔曲线呢?这里先做一下简单介绍:贝塞尔曲线也可以叫做贝济埃曲线或者贝兹曲线,它由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋.一般的矢量图形软件常 ...
随机推荐
- dwc3 usb debugfs(otg switch)
1. driver driver/usb/dwc3/debugfs.c dwc3 probe ->dwc3 debugfs init() 2. enable debugfs mount -t d ...
- os.environ["CUDA_DEVICE_ORDER"] = '0'
这个总结来自:博客 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # 按照PCI_BUS_ID顺序从0开始排列G ...
- 2022年3月中国数据库排行榜:TiDB “三连降”仍霸榜首,“常胜四将军”得分集体下跌
春暖花开好时光,三月一号迎榜来.2022年3月的 中国数据库流行度排行榜 已在墨天轮社区发布,本月共有 199个 数据库参与排名,相比上月新增四个数据库.排名前十的数据库得分均有所波动,整体排名变动略 ...
- dotnet的Lambda表达式 委托泛型(2) Action Func
// 总结:// 泛型:把类,方法,属性,字段做到了通用化// 反射:操作dll文件的一个帮助类库// 特性:就是一个特殊的类 自定义标记属性特性 他就是AOP的另一种实现方式 验证属性// 委托:就 ...
- KubeSphere 3.1.1 发布,可以接入集群已有的 Prometheus
KubeSphere 作为一款面向应用的开源容器平台,经过 3 年的发展和 10 个版本的迭代,收获了两百多位开源贡献者,超过十万次下载,并有数千名社区用户用 KubeSphere 作为企业容器平台. ...
- Cloth Simulation with Root Finding and Optimization
目录 0 前言 1 Implicit Method 1.1 Root-finding 1.2 Optimization 1.3 Insight 2 Newton-Raphson Method 3 Ma ...
- SLAM中的各种地图
1.地图的不同分类方式 地图有多种不同的分类方式,网上有不少帖子介绍各种各样的地图,但并没有非常完整的总结地图应该怎么分类.论文[1]中将地图分成以下几种:拓扑地图.度量地图.度量-语义地图和混合地图 ...
- ArgoWorkflow教程(八)---基于 LifecycleHook 实现流水线通知提醒
本篇介绍一下 ArgoWorkflow 中的 ExitHandler 和 LifecycleHook 功能,可以根据流水线每一步的不同状态,执行不同操作,一般用于发送通知. 1. 概述 本篇介绍一下 ...
- ansible开局配置-openEuler
ansible干啥用的就不多介绍了,这篇文章主要在说ansible的安装.开局配置.免密登录. ansible安装 查看系统版本 cat /etc/openEuler-latest 输出内容如下: o ...
- 对于特定的游戏问题使用启发式算法可以取得比AI算法更好的表现
相关: Using A.I. to DOMINATE NERDS in TETRIS 有些问题的求解可以通过建模将其转换为强化学习问题,然后再使用强化学习算法对其进行求解,但是很多问题如果不建模为强化 ...