谁有在窗体上显示图片,在重绘时不闪烁的源码啊? 谁有在窗体上显示图片,在重绘时不闪烁的源码啊? 能给我一下不?我邮件地址[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先用内存画,再画到窗口上就可以了。CBitmap memBitmap; CBitmap* pOldBmp = NULL; memDC.CreateCompatibleDC(pDC); memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom); pOldBmp = memDC.SelectObject(&memBitmap); memDC.BitBlt(rect.left,rect.top,rect.right,rect.bottom,pDC,0,0,SRCCOPY); DrawWave(&memDC);//在drawwave中用内存DC:memDC先画好。 pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY); memDC.SelectObject(pOldBmp); memDC.DeleteDC(); memBitmap.DeleteObject(); void CCalendarCanvas::OnPaint(){ CPaintDC dc(this); HDC hDC = dc.GetSafeHdc(); CRect rect; GetClientRect(rect); // 创建后备缓冲区 HDC hdcMemory = ::CreateCompatibleDC(hDC); HBITMAP hBitmap = ::CreateCompatibleBitmap( hDC, rect.Width(), rect.Height()); HGDIOBJ hOriginalBmp = ::SelectObject(hdcMemory, hBitmap); { // 线性渐变背景 Graphics graph(hdcMemory); LinearGradientBrush brush( PointF( rect.left, rect.top) , PointF( rect.right, rect.bottom) , Color( 0xFF, 0xFF, 0xFF) , Color( 0x00, 0x00, 0x00) ); graph.FillRectangle( &brush , 0 , 0 , rect.Width() , rect.Height() ); } { int nLeft = (rect.Width()-CANVAS_WIDTH)/2; int nTop = (rect.Height()-CANVAS_HEIGHT)/2; // 调用另一个函数画主体 Graphics graph(hdcMemory); Draw( graph, nLeft, nTop); } ::BitBlt( hDC , 0 , 0 , rect.Width() , rect.Height() , hdcMemory , 0 , 0 , SRCCOPY ); ::SelectObject(hdcMemory, hOriginalBmp); ::DeleteObject(hBitmap); ::DeleteDC(hdcMemory); } 悲剧了!今天有人拿题考我 socket bind 函数的作用 高斯拉普拉斯算子进行边缘检测??? GDI 坐标映射方式问题 深入浅出第十二章SCRIBBLE4 XML Schema验证的问题!!! vc6.0中CAsyncSocket的接收问题,请叫版主 请推荐一本编程实例类的书 请教OpenGL问题,应该难不倒大家 简单问题:c/s怎么实现? 我要学VC++介绍点好主意 获得硬盘上所有文件接口的api是什么? 动态生成HTML文件 使用libcurl库如何才能够得到重定向之后的url?
CBitmap memBitmap;
CBitmap* pOldBmp = NULL;
memDC.CreateCompatibleDC(pDC);
memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
pOldBmp = memDC.SelectObject(&memBitmap);
memDC.BitBlt(rect.left,rect.top,rect.right,rect.bottom,pDC,0,0,SRCCOPY);
DrawWave(&memDC);//在drawwave中用内存DC:memDC先画好。
pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY); memDC.SelectObject(pOldBmp);
memDC.DeleteDC();
memBitmap.DeleteObject();
void CCalendarCanvas::OnPaint()
{
CPaintDC dc(this);
HDC hDC = dc.GetSafeHdc(); CRect rect;
GetClientRect(rect);
// 创建后备缓冲区
HDC hdcMemory = ::CreateCompatibleDC(hDC);
HBITMAP hBitmap = ::CreateCompatibleBitmap( hDC, rect.Width(), rect.Height());
HGDIOBJ hOriginalBmp = ::SelectObject(hdcMemory, hBitmap);
{
// 线性渐变背景
Graphics graph(hdcMemory);
LinearGradientBrush brush( PointF( rect.left, rect.top)
, PointF( rect.right, rect.bottom)
, Color( 0xFF, 0xFF, 0xFF)
, Color( 0x00, 0x00, 0x00)
);
graph.FillRectangle( &brush
, 0
, 0
, rect.Width()
, rect.Height()
);
}
{
int nLeft = (rect.Width()-CANVAS_WIDTH)/2;
int nTop = (rect.Height()-CANVAS_HEIGHT)/2;
// 调用另一个函数画主体
Graphics graph(hdcMemory);
Draw( graph, nLeft, nTop);
} ::BitBlt( hDC
, 0
, 0
, rect.Width()
, rect.Height()
, hdcMemory
, 0
, 0
, SRCCOPY
);
::SelectObject(hdcMemory, hOriginalBmp);
::DeleteObject(hBitmap);
::DeleteDC(hdcMemory);
}