如何实现刷新时不闪屏 我做了一个控件,把它放到网页上,功能是显示从服务器传过来的数据,因此要定时刷新,利用Ietimer控件每隔一秒刷新一次,可是一旦打开服务器开始传数据的时候,画面一直在闪,也是每一秒闪一次,怎么解决这个问题,谁来帮忙一下? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用内存DC,在内存DC上面画了再拷贝到pDC,就是所谓的double buffer啦 CDC MemDC;CBitmap m_bmp;BITMAP m_bitmap;if (style==1){m_bmp.LoadBitmap(IDB_MAIN);}else if (style==2){m_bmp.LoadBitmap(IDB_MAIN2);}m_bmp.GetBitmap(&m_bitmap);MemDC.CreateCompatibleDC(dc);MemDC.SelectObject(&m_bmp);dc->BitBlt(0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,&MemDC,0,0,SRCCOPY);m_bmp.DeleteObject();MemDC.DeleteDC();、 使用双缓冲贴图,同时,处理WM_ERSEBKGND消息,在OnEraseBkgnd里面直接返回TRUE 双缓冲绘图这篇文章中的控件用的就是这个技术http://blog.csdn.net/xianglitian/article/details/6100767 不是很明白,我做的控件里面没有用到位图啊,用的是GDI+来显示数据 还有一个常用的方法是先计算出更新的区域,然后只刷新/重绘这个小区域,不要遇到一点改变就刷新整个控件.这样的话如果更新部分在显示区域外,刷新都不要了.GetTextExtent可以获取字符串绘出后的的尺寸 这是GDI+的双缓冲http://www.codeproject.com/KB/GDI-plus/gdiplus.aspx不过我觉得还是GDI的快 我同时使用GDI+和DC画图,要怎么使用双缓冲呢void CVP_AnalogCtrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid){ CClientDC dc(this); brushBlack.CreateSolidBrush(RGB(255,255,255)); pdc->FillRect(rcBounds, &brushBlack); pdc->SetBkMode(TRANSPARENT ); Graphics graphics( pdc->m_hDC); //画图: graphics.、、、、、、、、 dc.、、、、、、、、、 、、、、、这样如何使用双缓冲技术呢 SetTimer控制鼠标单双击 如何控制另外一对话框的edit控件 基本语法问题 只要回答yse or no,10分只给一个人 编译器与VC 之间是什么关系? VC大概有多少种编译器? 越详细越好啊 小问题 关于链接器的问题 如果CString szline为Unicode 类型 中 utf-8 ,如何转化为正常类型,AfxMessageBox(szline)中汉字显示正常 简单的问题,但小弟想不通,请各位哥哥姐姐指教。 在MEMBER VARIABLE中,control 和Value的区别,急! 一个低级的线程程序,求解。。。 CRichEditCtrl的FindText是否有bug?
CDC MemDC;
CBitmap m_bmp;
BITMAP m_bitmap;if (style==1)
{
m_bmp.LoadBitmap(IDB_MAIN);
}
else if (style==2)
{
m_bmp.LoadBitmap(IDB_MAIN2);
}m_bmp.GetBitmap(&m_bitmap);
MemDC.CreateCompatibleDC(dc);
MemDC.SelectObject(&m_bmp);dc->BitBlt(0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,&MemDC,0,0,SRCCOPY);m_bmp.DeleteObject();
MemDC.DeleteDC();、
这篇文章中的控件用的就是这个技术
http://blog.csdn.net/xianglitian/article/details/6100767
不是很明白,我做的控件里面没有用到位图啊,用的是GDI+来显示数据
GetTextExtent可以获取字符串绘出后的的尺寸
http://www.codeproject.com/KB/GDI-plus/gdiplus.aspx
不过我觉得还是GDI的快
我同时使用GDI+和DC画图,要怎么使用双缓冲呢
void CVP_AnalogCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
CClientDC dc(this);
brushBlack.CreateSolidBrush(RGB(255,255,255));
pdc->FillRect(rcBounds, &brushBlack);
pdc->SetBkMode(TRANSPARENT );
Graphics graphics( pdc->m_hDC);
//画图:
graphics.、、、、、、、、
dc.、、、、、、、、、
、、、、、
这样如何使用双缓冲技术呢