You need to enable JavaScript to run this app. 如何实现可保留格式的自定义位图捕获?解决Bitmap文本变色、4K缩放截图裁切异常
优惠活动
大模型
产品
解决方案
定价
更多

如何实现可保留格式的自定义位图捕获?解决Bitmap文本变色、4K缩放截图裁切异常

WinForm窗体捕获相关问题

出现的两类异常

  • 捕获后文本颜色属性丢失:一直使用Bitmap捕获主窗体并保存为JPEG格式,但Bitmap无法保留文本的原有颜色属性。具体表现为主窗体内的ObjectListView控件中,有一列文本原本为红色,经过Bitmap捕获后,该列文本全部显示为黑色,两种效果的对比如下:
    • 主窗体实际显示效果:主窗体实际显示效果
    • Bitmap捕获得到的效果:Bitmap捕获得到的效果
  • 现有方案不适配高缩放场景:曾尝试通过全屏捕获、裁切出主窗体区域的方法替代原有捕获逻辑,该方法在1080p分辨率的显示器上运行正常,但在开启200%系统缩放的4K显示器上,会出现捕获图像被不当裁切的问题。

当前使用的捕获代码

public void SaveControlImage(Form form)
{
    string path_and_file = "C:\1.png";
    Bitmap controlBitMap = new Bitmap(form.Width, form.Height);
    Graphics g = Graphics.FromImage(controlBitMap);
    g.CopyFromScreen(PointToScreen(form.Location), new Point(0, 0), form.Size);

    // 示例:将捕获的窗体图像保存到指定路径
    controlBitMap.Save(path_and_file, System.Drawing.Imaging.ImageFormat.Png);
}

待解决的诉求

  • 排查Bitmap捕获时文本原有颜色丢失的根本原因
  • 寻找可替代的窗体捕获方法,兼容不同系统缩放比例下的捕获需求,避免出现图像裁切问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 07:54:05