0

我正在以另一种方式将我的 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 之类的属性(注意:我没有在我的代码中使用这些属性)。

那么,我该怎么做才能使我导出的视觉效果看起来像在屏幕上呈现的那样?谢谢!

4

1 回答 1

1

显然,如果 WPF 以透明背景为目标,则 WPF 不会呈现 ClearType 文本(谷歌此:RenderOptions.ClearTypeHint)。我想知道使用 24 位图像格式(无 alpha 通道)是否会取得更好的成功。此外,宽度/高度与实际宽度/实际高度不同。

于 2012-08-04T05:47:41.040 回答