如何缓存控件的图像
本文关键字:控件 图像 缓存 何缓存 | 更新日期: 2023-09-27 18:30:42
我有 C# 应用程序,但绘画工作C++项目中完成(这是必须的)。
所以我在我的窗口中添加了PictureBox
,并将句柄传递给绘图函数。它工作正常。
但是,当控件无效时(我将窗口移动到屏幕外,然后将其移回),结果是部分空的窗口。AFAIK 有两种方法——重新绘制或缓存图像。
重新绘制可能是昂贵的过程(图像不经常更改,但处理很耗时,想想 3d 渲染器),所以我想简单地缓存图像。
如果我没记错的话,从过去直接使用 Win32 API 编程开始,只需设置一些标志即可。WinForms可以吗?如果是,如何?
这将有助于:
Bitmap getControlSurface(Control ctl)
{
bitmap = new Bitmap(ctl.Width, ctl.Height);
using (Graphics g = Graphics.FromImage(bitmap))
{
Point pScreen = PointToScreen(ctl.Location);
g.CopyFromScreen(pScreen, Point.Empty, ctl.Size);
}
return bitmap;
}
如果您知道表面何时刷新,则可以像这样使用它:
if ( pictureBox1.Image != null) pictureBox1.Image.Dispose();
pictureBox1.Image = getControlSurface(pictureBox1);
唯一的问题是PictureBox
实际上必须在屏幕上完全可见!