GDI+自绘图像在窗口隐藏后刷新问题。

bj_leo_3000 2015-01-05 02:58:43
我使用pictruebox绘制图像,这幅图像我同时缓存在一个Graphics中。当绘制窗口被遮挡后再显示,我在Paint事件中将缓存的图像直接绘制在pictruebox上。但有时候会出现如下图的情况:

尤其是当绘制窗口快速移动到windows窗口外后再迅速移动回来,非常容易出现这种绘制不全的情况。但如果移动速度比较慢绘制就很完整,请问这是怎么个情况?
...全文
202 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghao0 2015-01-06
  • 打赏
  • 举报
回复
缓存时有问题吧
於黾 2015-01-06
  • 打赏
  • 举报
回复
背景的圆被刷新了,那么你应该在OnPaint事件里连背景的圆一起绘制出来,而不要把它作为背景图片直接添加在窗体背景上
於黾 2015-01-06
  • 打赏
  • 举报
回复
不要缓存图像对象,即使缓存了,也并不提高任何效率,仅仅是从数据解析成图像的步骤加快了,但是这个步骤本来就已经够快了,节省这个时间没什么意义.反而是图像绘制到窗体上很耗时,而你从缓存里拿出来往窗体上绘制和重新生成一个图像绘制,时间上是一样的,没有任何节省. 反而会因为你缓存了,如果缓存之前它就不完整,那么之后也都不完整,除非整个窗体刷新
bj_leo_3000 2015-01-06
  • 打赏
  • 举报
回复
我开始是直接绘制在Graphics上的,可是每次被遮挡后背景的圆就完全刷新掉了。而且我的绘制是根据实时数据绘上去的所以每次图案都不同,所以我每自绘一次就保存最新绘制的图像,需要刷新时就整幅图像重绘。
宝_爸 2015-01-06
  • 打赏
  • 举报
回复
绘制图像都是在OnPaint里绘制。 其它事件对实体类实例进行操作(增加,修改,删除等),然后刷新窗口。 OnPaint里根据实体类实例绘制,这样你就不需要处理隐藏后刷新的问题了。
Forty2 2015-01-06
  • 打赏
  • 举报
回复
不要缓存Graphics。
sxldfang 2015-01-06
  • 打赏
  • 举报
回复
图怎么看不见啊?
bj_leo_3000 2015-01-06
  • 打赏
  • 举报
回复
奇怪的现象是如果我的移动速度快就会出现无法绘制完整的情况,如果移动的慢一些就能绘制出完整的图像。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧