繁体   English   中英

使用MigraDoc将ZedGraph转换为PDF

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM