如题,最简单的显示个 n% 即可,我写的刷新有问题!请问用双缓存怎么画?#if 1
CString strText;
strText.Format(_T("%d%%"),m_iPos);
dc.SetBkMode(TRANSPARENT);
dc.DrawText(strText,-1,rcText,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
#else
// now draw whatever you want
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(dc.m_hDC);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
MemBitmap.CreateCompatibleBitmap(dc.m_hDC, rcText.Width(), rcText.Height());
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap OldBit;
OldBit.m_hBitmap = MemDC.SelectBitmap (MemBitmap.m_hBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(rcText.left,rcText.top,rcText.Width(), rcText.Height(), RGB(0, 0, 0));
//绘图
CRgn rgn;
rgn.CreateRectRgn(rcText.left, rcText.top, rcText.right, rcText.bottom);
MemDC.SelectClipRgn(rgn);
CString strText;
strText.Format(_T("%d%%"),m_iPos);
MemDC.SetBkMode(TRANSPARENT);
MemDC.DrawText(strText,-1,rcText,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
//MemDC.FillRect(&rect, brush.m_hBrush);
//将内存中的图拷贝到屏幕上进行显示
BOOL result = dc.BitBlt(rcText.left,rcText.top,rcText.Width(), rcText.Height(),MemDC.m_hDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
#endif
CString strText;
strText.Format(_T("%d%%"),m_iPos);
dc.SetBkMode(TRANSPARENT);
dc.DrawText(strText,-1,rcText,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
#else
// now draw whatever you want
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(dc.m_hDC);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
MemBitmap.CreateCompatibleBitmap(dc.m_hDC, rcText.Width(), rcText.Height());
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap OldBit;
OldBit.m_hBitmap = MemDC.SelectBitmap (MemBitmap.m_hBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(rcText.left,rcText.top,rcText.Width(), rcText.Height(), RGB(0, 0, 0));
//绘图
CRgn rgn;
rgn.CreateRectRgn(rcText.left, rcText.top, rcText.right, rcText.bottom);
MemDC.SelectClipRgn(rgn);
CString strText;
strText.Format(_T("%d%%"),m_iPos);
MemDC.SetBkMode(TRANSPARENT);
MemDC.DrawText(strText,-1,rcText,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
//MemDC.FillRect(&rect, brush.m_hBrush);
//将内存中的图拷贝到屏幕上进行显示
BOOL result = dc.BitBlt(rcText.left,rcText.top,rcText.Width(), rcText.Height(),MemDC.m_hDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
#endif
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货