图形和绘图
图形和绘图
Aspose.PDF FOSS for .NET 包含一个绘图子系统,用于向 PDF 页面添加矢量图形。Graph 容器保存形状元素(Line、Arc、Circle),并被添加到页面的 Paragraphs 集合中。
创建图形容器
Graph 定义了一个具有指定宽度和高度的可绘制区域。
using var doc = new Document();
var page = doc.Pages.Add();
var graph = new Graph(400, 200);
page.Paragraphs.Add(graph);绘制线条
var line = new Line(new float[] { 0, 0, 300, 100 });
graph.Shapes.Add(line);绘制弧线和圆
var arc = new Arc(150, 100, 80, 0, 180);
graph.Shapes.Add(arc);
var circle = new Circle(150, 100, 50);
graph.Shapes.Add(circle);使用颜色
Color 类提供用于 RGB、ARGB 和命名颜色的工厂方法。
var red = Color.FromRgb(1.0, 0.0, 0.0);
var semiTransparent = Color.FromArgb(128, 0, 0, 255);绘制路径
DrawingPath 支持 MoveTo、LineTo、CurveTo 和 Close 用于自由形状矢量形状。
var path = new DrawingPath();
path.MoveTo(10, 10);
path.LineTo(100, 10);
path.CurveTo(150, 50, 150, 100, 100, 100);
path.Close();图像格式
ImageFormat 提供用于将页面转换为图像时的光栅格式枚举值:Bmp、Jpeg、Png、Tiff、Gif。
技巧与最佳实践
- 设置图形尺寸以匹配您想要绘制的区域——
Graph内的坐标相对于其边界。 - 使用
Color.FromArgb进行半透明填充(支持 alpha 通道)。 - 在单个
Graph中组合多个形状,以实现高效渲染。 DrawingPath非常适合复杂的贝塞尔曲线和任意多边形形状。- 将
Graph添加到页面的Paragraphs集合中——不要将其添加到注释中。
常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Shape not visible | Graph dimensions too small for the shape coordinates | Increase Graph width/height or scale shape coordinates |
| Colors appear different in viewer | Color space mismatch | Use Color.FromRgb with values in 0.0-1.0 range |
| Drawing overlaps text | Graph placed at wrong position in paragraph flow | Adjust paragraph ordering or use FloatingBox for absolute positioning |
常见问题
我可以绘制填充形状吗?
是的。将形状的 GraphInfo.FillColor 属性设置为使用纯色填充。
如何在特定页面坐标处定位图形?
将 Graph 包装在 FloatingBox 中,并设置其 Left 和 Top 属性以实现绝对定位。
该库支持渐变吗?
Shading 类支持基本的阴影模式。使用 DrawingPath 与阴影进行渐变填充。
API 参考摘要
| 类 / 方法 | 描述 |
|---|---|
Graph | 可绘制形状的容器,添加到页面段落中 |
Line | 两个或多个点之间的直线 |
Arc | 由中心、半径和角度定义的圆弧 |
Circle | 由中心和半径定义的圆形 |
DrawingPath | 包含 MoveTo、LineTo、CurveTo、Close 的自由路径 |
Color | 包含 RGB、ARGB 以及工厂方法的颜色值 |
Color.FromRgb | 从 RGB 组件创建颜色 |
Color.FromArgb | 创建具有 alpha 透明度的颜色 |
GraphicElementCollection | 页面上图形元素的集合 |
ImageFormat | 栅格图像格式的枚举 (Bmp, Jpeg, Png, Tiff, Gif) |