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

VB实现RichTextBox控件截图时捕获到窗体其他区域该如何解决

RichTextBox控件截图捕获区域错误修复方案

问题原因

RichTextBox2.Bounds返回的是控件相对于其父容器的相对坐标,而CopyFromScreen方法要求输入的起始坐标是屏幕绝对坐标,二者不匹配就会导致截图区域偏移,捕获到窗体其他部分内容。

修复方案

用PointToScreen方法把控件左上角的相对坐标转换为屏幕绝对坐标再传入即可,修正后的代码如下:

Dim memoryImage As Bitmap
' 先获取控件左上角的屏幕绝对坐标
Dim controlScreenPos As Point = RichTextBox2.PointToScreen(Point.Empty)
Dim s As Size = RichTextBox2.Size
memoryImage = New Bitmap(s.Width, s.Height)

Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
' 传入转换后的屏幕坐标
memoryGraphics.CopyFromScreen(controlScreenPos.X, controlScreenPos.Y, 0, 0, s)
memoryImage.Save(audiooutputfolder & name & ".png")
' 用完主动释放资源避免GDI资源泄漏
memoryGraphics.Dispose()
memoryImage.Dispose()

额外优化说明

  • 原代码里创建的Me.CreateGraphics()对象实际没有用到,可以直接删除,避免不必要的资源占用
  • 操作完成后主动释放Graphics和Bitmap对象,避免长时间运行出现资源泄漏问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:30:00