关于控件重绘

ouc_ajax 2010-06-29 09:48:48
大牛们:
我项目上遇到一个问题: 需要做一个实时监控的控件。我画了一张路线图(包括线路、站点),再在上边画上一些公交车,是属于实时监控的。 小车如果做成lable或者pannel的话,每次调用Invalidate事件,都会导致底下的线路图也被重绘。 我明白这个是微软系统自己的优化机制。有什么好办法吗? 例如可以画pannel不去掩盖底下,从而移动的时候不触发父类的OnPaint事件。
或者有什么更好的建议也可以提出来,谢谢了!
...全文
160 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
llxzj60 2010-06-30
  • 打赏
  • 举报
回复
不要用控件了,用控件会很慢,直接绘制在背景上吧
卧_槽 2010-06-30
  • 打赏
  • 举报
回复
可以只重绘改变的部分
g394594141 2010-06-30
  • 打赏
  • 举报
回复
不能直接把你那地图画成图赋值给控件吗? 这样你就不用管它重绘了
悔说话的哑巴 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dylike 的回复:]
用缓存贴图,不使用paint.
[/Quote]
tigerleq 2010-06-30
  • 打赏
  • 举报
回复

可能吗
zhubo006 2010-06-30
  • 打赏
  • 举报
回复
beblue 2010-06-30
  • 打赏
  • 举报
回复
好贴,顶一下
老Key 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ybblack001 的回复:]
引用 4 楼 ouc_ajax 的回复:
To #3楼
每次绘制之前先把要遮挡的背景复制出来,移动前先恢复背景,再在移动后的位置绘制(同样要复制背景)。 能说的具体点吗? 我现在正在考虑这种思路,但是由于小车移动前的背景有可能是车、有可能是路线、站点,甚至是文字,我怎么保存出来阿?

保存小车的坐标,计算位移,然后决定移动背景还是前景,双缓存技术你可以适当看一下,可以平滑切图
[/Quote]恩恩
ybblack001 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ouc_ajax 的回复:]
To #3楼
每次绘制之前先把要遮挡的背景复制出来,移动前先恢复背景,再在移动后的位置绘制(同样要复制背景)。 能说的具体点吗? 我现在正在考虑这种思路,但是由于小车移动前的背景有可能是车、有可能是路线、站点,甚至是文字,我怎么保存出来阿?
[/Quote]
保存小车的坐标,计算位移,然后决定移动背景还是前景,双缓存技术你可以适当看一下,可以平滑切图
兔子-顾问 2010-06-30
  • 打赏
  • 举报
回复
移动居然用控件!
sxmonsy 2010-06-30
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
dylike 2010-06-30
  • 打赏
  • 举报
回复
用缓存贴图,不使用paint.
ouc_ajax 2010-06-29
  • 打赏
  • 举报
回复
To #3楼
每次绘制之前先把要遮挡的背景复制出来,移动前先恢复背景,再在移动后的位置绘制(同样要复制背景)。 能说的具体点吗? 我现在正在考虑这种思路,但是由于小车移动前的背景有可能是车、有可能是路线、站点,甚至是文字,我怎么保存出来阿?
cnzdgs 2010-06-29
  • 打赏
  • 举报
回复
如果不想让父窗口重绘,这个小车就不要用控件了,直接画在父窗口上,每次绘制之前先把要遮挡的背景复制出来,移动前先恢复背景,再在移动后的位置绘制(同样要复制背景)。
mailpq 2010-06-29
  • 打赏
  • 举报
回复
在一后台线程中,用Invoke方法,来改变label或者Panel的位置。。。
没试验过,不知道行不行……
linphantom 2010-06-29
  • 打赏
  • 举报
回复
不知道你原来是用什么来绘图的

绘图用 Microsoft.DirectX Microsoft.DirectX.Direct3D 我见还满方便的

110,538

社区成员

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

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

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