[英]ZedGraph to PDF using MigraDoc
我目前正在开发一个C#应用程序,旨在在pdf文件中进行一些计算和输出图形。
我使用Zedgraph库绘制图形,例如graphPane.AddCurve(PointPairList)。 现在,我尝试通过MigraDoc软件包将这些图形输出为pdf文件。
当前,我有一个脚本,可将Zedgraph映射到位图,然后将其粘贴到pdf文件中。 所以像这样:
private Bitmap getBitMap()
{
ZedGraphControl graph = new ZedGraphControl();
newGraph = graphPane.Clone();
SizeF s = new SizeF(3.5f, 4.5f);
newGraph.Scale(s);
newGraph.DrawToBitmap(bit, new Rectangle(0, 0, newGraph.Width, newGraph.Height));
return bit;
}
问题是,这给了我pdf页面上稍微像素化的图像。 我需要这张图非常高质量。 因此,有什么我可以改变提高质量的方法吗?或者我必须改变整个方法来解决这种问题。
提前非常感谢您。
默认情况下,您创建的Bitmap
具有当前屏幕分辨率 ,该分辨率可能低至75dpi
,更常见的是96dpi
; 较新的显示器具有120dpi
或更高的120dpi
,但良好的打印质量始于150dpi
。 对于真正的图像图像,您需要300dpi
,要进行缩放,则可能需要600dpi
或更高。
因此,您需要创建一个更大的位图并填充它,并控制其dpi分辨率。
假设3.5fx 4.5f
的尺寸为英寸,则对于300dpi
您需要1050 x 1350
像素的Bitmap
。
因此,您应该创建这样的Bitmap
..:
Bitmap bmp = new Bitmap(1050, 1350);
..并设置分辨率:
bmp.SetResolution(300, 300);
要填充它,您的控件必须具有相同的大小:
newGraph.ClientSize = bmp.Size;
现在, DrawToBitmap
应该创建清晰且适合放大的图像。
请注意,控件是否太大而不适合显示在屏幕上都没有关系。 DrawToBitmap
仍然可以使用。
更新除了要有足够的分辨率外,还要画出高质量的线条等。ZedGraph的一个特色是可以为每条线条打开Antialiasing :
curve_x.Line.IsAntiAlias = true;
或其他元素:
myPane.XAxis.Scale.FontSpec.IsAntiAlias = true;
或整个图表:
zedGraphControl1.IsAntiAlias = true;
所有示例均摘自本文 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.