首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

EVC画图,图片从下往上刷的有关问题

2012-08-09 
EVC画图,图片从上往下刷的问题void CUserLoginDlg::DrawBitmap(int Name,int x,int y,int nWidth,int nHei

EVC画图,图片从上往下刷的问题
void CUserLoginDlg::DrawBitmap(int Name,int x,int y,int nWidth,int nHeight)
{
CWindowDCdc(this);
CBitmapbk_bmp, *p_old_bmp;
CDCbmp_dc;
CBrush brush(RGB(0,0,0));
bmp_dc.CreateCompatibleDC(&dc);
//dc.FillRect(CRect(x,y,nWidth,nHeight ),&brush);
bk_bmp.LoadBitmap(Name);
p_old_bmp = (CBitmap *)bmp_dc.SelectObject(&bk_bmp);
dc.BitBlt( x, y, nWidth, nHeight, &bmp_dc, 0, 0, SRCCOPY );
bmp_dc.SelectObject(p_old_bmp);
bk_bmp.DeleteObject();
}

见代码,我画一幅大一点的800*480的图,我总是可以看见图是从上往下刷的一个过程(也就是从上往下一行一行刷下来,至整个屏幕),我试过了CxImage,和双缓存,效果还是一样,请问一下是什么原因?
会不会不是代码的问题?

[解决办法]

探讨
引用:
1,建立一个缓存MEMDC,在初始化initdiag时就,包含图片
2,dc.BitBlt( x, y, nWidth, nHeight, &MEMDC, 0, 0, SRCCOPY );
  这样就不会刷了,
以上是经验总结,请测试!



双缓存我试过了,其实就是第一次onpaint()的时候效果比较明显,会看到CPaintDC dc(this);这代码显示的窗体白色背景,再来刷图的,所以会很明显,但是第二次调用就没那么明显了

[解决办法]
探讨
引用:
引用:
1,建立一个缓存MEMDC,在初始化initdiag时就,包含图片
2,dc.BitBlt( x, y, nWidth, nHeight, &MEMDC, 0, 0, SRCCOPY );
  这样就不会刷了,
以上是经验总结,请测试!


双缓存我试过了,其实就是第一次onpaint()的时候效果比较明显,会看到CPaintDC dc(this);这代码显示的窗体白色背景,再来刷图的,所以会很明显,但是第二次调用就没那么明显了


白色背景,是因为擦除背景的关系,可以处理OnEraseBK(擦除背景消息,记不太清楚了),直接返回TRUE。

热点排行