和MFC一样,在smartphone上绘制的时候也会遇到背景闪烁的问题
在MFC上解决方法一般是三个步骤:
1.屏蔽系统自己的背景刷新(填充背景色)
BOOL XXXX::OnEraseBkgnd(CDC* pDC)
{
// Left empty, avoids undesirable flickering
return true;
}
注意:如果屏蔽了这里,一定要自己处理整个的背景刷新
2.在onpaint ondraw中贴图的时候,利用缓冲,整体绘制
void Onpaint()
{
CDC memdc;
//....
}
3.尽量进行局部刷新
InvalidateRect(…);
Smartphone上处理背景闪烁,也是相同的步骤
1,屏蔽系统背景绘制
protected override void OnPaintBackground(PaintEventArgs paintg)
{
// Left empty, avoids undesirable flickering
}
把上面代码写入自己的FORM中就可以,一样需要自己处理整个的背景刷新
2.在中贴图的时候,利用缓冲,整体绘制
private void Mainlist_Paint(object sender, PaintEventArgs e)
{
Graphics gxOff; //缓冲Graphics
if(bkscreen==null) //BITMAP bkscreen
bkscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
gxOff = Graphics.FromImage(bkscreen);
gxOff.Clear(this.BackColor);
gxOff.DrawImage(bkImage, 0, 0);
//最后整体贴入设备上
e.Graphics.DrawImage(bkscreen, 0, 0);
}
3.尽量进行局部刷新
this.Invalidate(new Rectangle(0, 34, 30, 170));
this.Update();
利用上面的方法就能很好的解决背景闪烁的问题了.
posted on 2006-06-13 10:16 teky 阅读(2109)
评论(4) 编辑 收藏