winform上,在Form上加了一个pictureBox控件,用GDI绘制的内容放在pictureBox控件上,我是有定时器的一秒刷新一次。那我用invalidate重绘的时应该是this.invalidate,还是picturebox.invalidate?当是this.invalidate的时候我加了双缓存还是有闪屏现象,和不加双缓存的时候效果一样。当我picturebox.invalidate时,pictureBox上面的内容就会消失,偶尔出现一下。正确的应该是重绘Form,还是pictureBox? |
|
10分 |
画在哪个控件上的,哪个控件就invalidate.至于会消失一下,因为你用的是paint,屏幕更新,你的画面就被抹除了.如果想要不消失,就画在bitmap上,并将此bitmap设置为picturebox的背景.
|
你双缓存用的不对
|
|
双缓存用对了,不会出现你说的这种现象
|
|
你说的bitmap只是白色的背景吗? |
|
我有一个简单的demo你能看看哪里不对吗?1295962107 qq发你
|
|
我有一个简单的demo你能看看哪里不对吗?1295962107 qq发你 |
|
10分 |
在OnPaint里重绘,不要在timer里重绘
|
其实我还想问在form上直接画的时候,刷新闪一下屏是因为先把画面清空了再显示,所以有闪屏现象我可以理解,但是在picTureBox上为什么直接就消失了?而不是闪屏的现象,是直接消失没了,不太理解。 |
|
因为form本身刷新的时候,也不是每次都整个刷新的
picturebox刷新周期会比form快 |
|
10分 |
你一秒刷一次太浪费了吧,应该根据需要刷新,也就是在picturebox内容(位置什么的)改变时刷新,还一个应该把画图写到OnPaint里,而不是用timer控件去刷
|
picturebox.CreateGraphics().DrawImage(xxx,xxx);
|