WIN32常用
阅读原文时间:2023年07月08日阅读:1

//1.设置窗口大小
MoveWindow(hWnd, , , + , + , FALSE);
//放在InitInstance用于设置位置与窗口大小
//传递句柄就可以绘图

//2.双缓冲绘图模式
void cDefense::DrawAll()
{
HDC hDc = GetDC(m_hWnd);
HDC dcMem = CreateCompatibleDC(hDc);
//创建与hDc兼容的位图 即一片内存
HBITMAP hBitmap = CreateCompatibleBitmap(hDc, , );
//把这个位图与窗口dcMem绑定起来 即把这片内存与窗口dcMem绑定起来 对dcMem操作则为对这片内存的操作
SelectObject(dcMem, hBitmap);
//把所有的图像绘制到dcMem上
DrawMap(dcMem);

//把dcMem绘制到hDc上 Select后才能BitBlt  
BitBlt(hDc, , , , , dcMem, , , SRCCOPY);  
ReleaseDC(m\_hWnd, hDc);  
DeleteObject(dcMem);  
DeleteObject(hBitmap);  

}

void cDefense::DrawMap(HDC dcMem)
{
HDC dcTemp;
dcTemp = CreateCompatibleDC(NULL);
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"images\\maps\\bg.bmp", IMAGE_BITMAP, , , LR_LOADFROMFILE);
SelectObject(dcTemp, hBitmap);

BITMAP bitInfo;  
GetObject(hBitmap, sizeof(BITMAP), &bitInfo);  

//无透明色贴上去
BitBlt(dcMem, , , bitInfo.bmWidth, bitInfo.bmHeight, dcTemp, , , SRCCOPY);

DeleteObject(dcTemp);  
DeleteObject(hBitmap);  

}
//dcTemp是中间窗口 ,可以选择不同的窗口,一个窗口只能选择一张位图 然后可以贴到另一个窗口的某一个位置上
//总结:创建窗口 创建位图 选定位图 获取位图信息 绑定位图

//把一个窗口贴到另一个窗口的某一个位置有透明色
TransparentBlt(dcMem,it->x-bitInfo.bmWidth/,it->y-bitInfo.bmHeight/, bitInfo.bmWidth,bitInfo.bmHeight,dcTemp,,,
    bitInfo.bmWidth,bitInfo.bmHeight,RGB(,,));

//获取当前鼠标位置
//参数LPARAM lParam
//包含头文件 #inlcude
tagPOINT ptCur;
ptCur.x = GET_X_LPARAM(lParam);
ptCur.y=GET_Y_LPARAM(lParam);

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章