首页 > 其他分享 >PDFSharp - Graphics

PDFSharp - Graphics

时间:2023-03-17 20:56:54浏览次数:49  
标签:函数 PDFSharp Graphics 使用 类型 XGraphics

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,使用,类型,XGraphics
From: https://www.cnblogs.com/haogj/p/16960235.html

相关文章

  • QT QGraphicsView 如何实现图片按照鼠标点进行放大缩小效果
    原文链接#include<QScrollBar>//获取当前鼠标相对于view的位置;QPointFcursorPoint=event->pos();//获取当前鼠标相对于scene的位置;......
  • Astute Graphics for Mac(全系列ai插件合集)支持ai 2022/2023
    哪里可以下载ai插件AstuteGraphics?今天macw小编为大家带来的是包含了AstuteGraphics出品的全系列21套AI插件:astutegraphics破解版下载。其中包含了包括颜色控制、图形剪......
  • QT 让QGraphicsView 和 QGraphicsScene 重合
    Qt关于QGraphicsView和QGraphicsScene坐标系对不上的问题原文链接:(15条消息)Qt关于QGraphicsView和QGraphicsScene坐标系对不上的问题_屁股大象的博客-CSDN博客_qt坐标......
  • Qt QGraphicsView移动、缩放
    首先需要明白,view在整个视图框架中的角色是用于显示scene的,所以决定了如何展示scene,包括scale()函数,用于放大缩小所展示的scene;centerOn()函数,决定scene的中心在何方。所有......
  • Silicon Graphics Image (SGI)
    SiliconGraphicsImage (SGI)orthe RGBfileformat isthenative raster graphicsfileformat for SiliconGraphics workstations.[3] Theformatwasinv......
  • Arcgis api for JS | GraphicsLayer图层生成热力图
    ArcGISAPI渲染热力图是在FeatureLayer里,怎么渲染呢?原来热力图有个专门的渲染器:HeatmapRenderer,将样式赋给该渲染器,然后渲染器、点数据等参与FeatureLayer的构造,就可以了......
  • Graphics 图形
    您可以将图形元素与标记中的其他元素无缝混合。布局对图形的作用与对任何其他元素的作用完全相同。图形和其他内容不仅可以在标记中并排存在,而且它们甚至可以混合在一起。......
  • GAMES101&Fundamentals of Computer Graphics
    GAMES101-现代计算机图形学入门-闫令琪课程视频:https://www.bilibili.com/video/BV1X7411F744/?share_source=copy_web&vd_source=e9d67ecc6775d595879efd0a7d60d332课程......
  • Rockchip | Rockchip Graphics与Display
    1Graphics介绍1.1使用X11GraphicsXserver是在常规桌面Linux平台上使用的显示系统。Rockchip有一个定制的 ​​Xserver​​​ ,可以实现 ​​glamor2Dacceleratio......
  • java制作海报七:java Graphics2D 合成图片 在 linux下中文不显示,echarts图上的中文也不
    文章目录​​前言​​​​一、问题描述和原因​​​​二、linux添加中文字体​​前言代码都上传到GitHub了,这里仅仅是贴出来主要部分,GitHub传送门:​​https://github.com/fe......