0

グリッド (wpf) があり、グリッドを画像として保存したいと考えています。グリッド名は gridPrintPanel (WxH: 1800x1200) です。RenderTargetBitmap を使用してデータを取得し、ファイルとして保存しようとしました。

string tempFile = @"D:\temp.png";
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(1800, 1200, 0, 0, PixelFormats.Pbgra32);
renderTargetBitmap.Render(ViewInstance.gridPrintPanel);

PngBitmapEncoder pngImage = new PngBitmapEncoder();
pngImage.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
using (Stream fileStream = File.Create(tempFile))
{
      pngImage.Save(fileStream);
}

問題は、画面解像度が異なる2つの異なるマシンでプログラムを実行すると、結果の画像が異なることです。フル HD 画面のマシンでは期待どおりの結果が得られますが、画面解像度 1024x768 の別のマシンではデータの少ない画像が得られます。私のグリッドにはデータグリッドが含まれており、2 番目のマシンは最後の行を失ったデータグリッドを提供します。ここで質問したいのは、画面の解像度が結果に影響を与える可能性はありますか? そして、同じ結果、つまり両方のマシンで完全なイメージを得るにはどうすればよいでしょうか。

4

1 に答える 1

0

問題は、2 つの画面の解像度の違いです。グリッドのサイズを 3600x2400 に変更しようとしたとき。両方のマシンで予期しない結果が得られます (データの欠落)。この問題の一時的な解決策: グリッドのサイズを 900x600 に変更し、画像をレンダリングするとき (ベクター画像であるため) dpi を 192d に変更します。

RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(1800, 1200, 192d, 192d, PixelFormats.Pbgra32);
于 2015-08-13T05:15:04.057 に答える