void DrawBmp(HDC hDC, HBITMAP hBitmap)
{
HDC hdcMEM; //用于缓冲作图的内存DC
HBITMAP bmp; //内存中承载临时图象的位图
HANDLE hOld;
hdcMEM = CreateCompatibleDC(hDC);//依附窗口DC创建兼容内存DC
bmp = CreateCompatibleBitmap(hDC, 100, 100); //创建与hDC环境相关的设备兼容的位图
SelectObject(hdcMEM, bmp);
hOld = SelectObject(hdcImage, hBitmap);
StretchBlt(hDC, 0, 0, 100, 100, hdcMEM, 0, 0, 100, 100, SRCCOPY);
SelectObject(hdcImage, hOld);
DeleteObject(hOld);
}
void DrawBmp(HDC hDC, HBITMAP hBitmap)
{
HDC hdcImage;
HDC hdcMEM; //注意此处,创建了两个HDC
hdcMEM = CreateCompatibleDC(hDC);
hdcImage = CreateCompatibleDC(hDC);
HBITMAP bmp = ::CreateCompatibleBitmap(hDC, nWidth, nHeight);//创建与hDC环境相关的设备兼容的位图
SelectObject(hdcMEM, bmp);
SelectObject(hdcImage, hBitmap);//注意此处,将要画的位图选入hdcImage
StretchBlt(hdcMEM, 0, 0, 100, 100, hdcImage, 0, 0, 100, 100, SRCCOPY); //这里才能正常画图,将hdcImage中的位图直接复制到内存缓冲区
StretchBlt(hDC, 0, 0, 100, 100, hdcMEM, 0, 0, 100, 100, SRCCOPY); //再将内存缓冲区中的数据绘制到屏幕上.
DeleteObject(hdcImage);
}
DrawBmp(hDC, hBitmap1); DrawBmp(hDC, hBitmap2);
void DrawBmp(HDC hDC, HBITMAP hBitmap) //此处返回类型改为HDC
{
HDC hdcMEM;
hdcMEM = CreateCompatibleDC(hDC);
SelectObject(hdcMEM, hBitmap); //将位图选择进内存DC
StretchBlt(hDC, 0, 0, 100, 100, hdcMEM, 0, 0, 100, 100, SRCCOPY);//这里才能正常画图,将hdcImage中的位图直接复制到内存缓冲区
DeleteObject(hdcMEM);
}
DrawBmp(hdcTmp , hBitmap1);
void C****Dlg::OnPaint()
{
if (IsIconic())
{
//......
}
else
{
//CDialog::OnPaint(); //不要调用这个
CPaintDC dc(this);//对话框的dc//通常CPaintDC用来响应WM_PAINT消息。
//CPaintDC是从CDC派生出来的:在构造时自动调用CWnd::BeginPaint,析构时调用CWnd::EndPaint。
RECT rect;// 客户区矩形
GetClientRect(&rect);
// 使用双缓冲避免屏幕刷新时闪烁
CDC dcMem;// 内存dc
CBitmap bmpMem; // 位图
dcMem.CreateCompatibleDC(NULL);// 创建兼容dc
bmpMem.CreateCompatibleBitmap(&dc, rect.right-rect.left, rect.bottom-rect.top);//创建跟客户区域大小一样的(空)位图
// 把位图选到设备上下文环境中
CBitmap *pOld = dcMem.SelectObject(&bmpMem);
// dcMem.FillSolidRect(&rect, RGB(255,255,255));
// 在此处将绘制内容全画到dcMem内存中,(即把之前使用CPaintDC绘制的dc换成dcMem即可)
DrawTable(dcMem);//画棋盘
DrawChesses(dcMem); // 画棋子
//......
// 至此,内存中绘图完毕
// 从内存拷贝到设备dc
dc.BitBlt(0, 0, rect.right - rect.left, rect.bottom - rect.top, &dcMem, 0, 0, SRCCOPY);
dc.SelectObject(pOld);
// 释放资源
bmpMem.DeleteObject();
dcMem.DeleteDC();
}
}
if (TRUE == bgroundChanged)
{
bgroundChg = FALSE;
ModifyStyle(0, WS_CLIPCHILDREN);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-3 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2026 源码网商城 (www.yuanmawang.com) 版权所有