次の方法で、WPF (4.0) ビジュアル (ベクター図) をいくつかの画像形式にエクスポートしています...
public void ExportImageTo(BitmapEncoder Encoder, Stream ExportStream, Visual SourceVisual, int Width, int Height)
{
var Result = new RenderTargetBitmap(Width, Height, WPF_DPI, WPF_DPI, PixelFormats.Default);
Result.Render(Source);
Encoder.Frames.Add(BitmapFrame.Create(Result));
Encoder.Save(ExportStream);
ExportStream.Flush();
ExportStream.Close();
}
問題は、PngBitmapEncoder (ロスレス アルゴリズム) を使用しても、画面内のピクセルとは異なるいくつかの小さなピクセルが生成されることです。
WPF がテキストをレンダリングする方法やアンチエイリアスを処理する方法、および UseLayoutRounding、SnapsToDevicePixels、BitmapScalingMode などのプロパティが存在する方法に関連していると思います (注: コードでこれらのプロパティを使用していません)。
では、エクスポートされたビジュアルを画面にレンダリングされたものと同じように見せるにはどうすればよいでしょうか? ありがとう!