You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WPF中保存清晰无模糊的高质量控件图像?

问题:RenderTargetBitmap导出大尺寸图像模糊

我正在使用DrawingContext绘制图像,随后将结果渲染至RenderTargetBitmap。图像在屏幕上显示清晰锐利,但保存后会变得模糊,即使在100%缩放比例下该问题仍然存在。有趣的是,当图像宽度小于2000px时导出正常,但宽度越大,导出的图像模糊程度越高。

代码示例

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    BitmapImage bitmap = new BitmapImage();
    bitmap.BeginInit();
    bitmap.UriSource = new Uri(@"image-full-hd.png");
    bitmap.EndInit();
    img1.Source = bitmap;

    img1.Width = bitmap.Width;
    img1.Height= bitmap.Height;
}

private void btnExport_Click(object sender, RoutedEventArgs e)
{
    var result = CaptureSnapshot(img1);
    Clipboard.SetImage(result);
}

public BitmapSource CaptureSnapshot(UIElement source)
{
    var dpi = VisualTreeHelper.GetDpi(source);
    double dpiX = dpi.DpiScaleX, dpiY = dpi.DpiScaleY;

    double newImageWidth = source.RenderSize.Width * dpiX;
    double newImageHeight = source.RenderSize.Height * dpiY;

    RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)newImageWidth, (int)newImageHeight, 96, 96, PixelFormats.Pbgra32);

    DrawingVisual visual = new DrawingVisual();

    using (DrawingContext context = visual.RenderOpen())
    {
        VisualBrush sourceBrush1 = new VisualBrush(source)
        {
            Stretch = Stretch.None
        };

        context.DrawRectangle(sourceBrush1, null, new Rect(source.RenderSize));
    }

    System.Windows.Size s1size = new System.Windows.Size(newImageWidth, newImageHeight);
    source.Measure(s1size); 
    source.Arrange(new Rect(s1size));

    RenderOptions.SetEdgeMode(renderTarget, EdgeMode.Unspecified);
    RenderOptions.SetBitmapScalingMode(renderTarget, BitmapScalingMode.HighQuality);
    renderTarget.Render(visual);

    return renderTarget;
}

截图展示

  • 应用程序窗口:应用程序窗口截图
  • 宽度为3400px的导出图像局部:宽幅导出图像模糊局部截图

内容的提问来源于stack exchange,提问作者Riz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:35:18