0

私は現在、いくつかの計算を行い、pdf ファイルでグラフを出力することを目的とした C# アプリケーションに取り組んでいます。

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 ページにわずかにピクセル化された画像が表示されることです。そして、このグラフを非常に高品質にする必要があります。それで、品質を向上させるために変更できるものはありますか、それともそのようなことに対するアプローチ全体を変更する必要がありますか.

よろしくお願いします。

4

1 に答える 1

0

デフォルトでは、Bitmap作成する a には現在の画面解像度があり75dpi、より一般的96dpiです。最新のモニターには120dpi以上がありますが、良好な印刷品質が始まり150dpiます。本当に必要な画像を切り取り300dpi、ズームを許可するには600dpi、またはそれ以上の画像が必要になる場合があります..

したがって、より大きなサイズのビットマップを作成して塗りつぶし、その dpi 解像度を制御する必要があります。

3.5f x 4.5fのサイズがインチであると仮定すると、 withピクセル300dpiが必要になります。Bitmap1050 x 1350

したがって、そのような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;

すべての例は、この投稿から取られています。

于 2016-03-22T07:36:06.640 に答える