函数填空】 函数的功能是,利用两张黑白蒙版图,对带有橙色边框的棋子位图进行裁边,使得棋子贴到棋盘后不会显示橙色边框。最后在窗口中显示出来。 此函数不需要你了解课外知识,你只需要根据课程中所学位运算知识,结合函数中的注释,决定函数中用汉字占位的3个地方应该使用哪种位运算。 如果你认为该处应该以“按位与”的方式贴图,请填入SRCAND宏; 如果你认为该处应该以“按位或”的方式贴图,请填入SRCPAINT宏; 如果你认为该处应该以“按位异或”的方式贴图,请填入SRCINVERT宏。 (提示:白色像素的红绿蓝三原色都是255,黑色像素的三原色都是0)void CutChessAndShow(HDC hdc, unsigned int x, unsigned int y) { HDC hMemDC, hMemDC2; hMemDC = CreateCompatibleDC(hdc); SelectObject(hMemDC, g_hBoardBmp); BitBlt(hdc, 0, 0, g_bmBoard.bmWidth, g_bmBoard.bmHeight, hMemDC, 0, 0, SRCCOPY); //将棋盘位图贴到窗口中 SelectObject(hMemDC, g_hMask_OuterWhite_InnerBlack); BitBlt(hdc, x, y, g_bmChess.bmWidth, g_bmChess.bmHeight, hMemDC, 0, 0, /!!!/这里要用某个宏来替代/!!!/); //将外白内黑的蒙版图以某种位运算方式贴到窗口中(注意此时窗口中已有棋盘位图) SelectObject(hMemDC, g_hChessBmp); //将棋子位图暂时贴到一个内存缓冲区 hMemDC2 = CreateCompatibleDC(hMemDC); SelectObject(hMemDC2, g_hMask_OuterBlack_InnerWhite); BitBlt(hMemDC, 0, 0, g_bmChess.bmWidth, g_bmChess.bmHeight, hMemDC2, 0, 0, /!!!/这里要用某个宏来替代/!!!/); //将外黑内白的蒙版图以某种位运算方式贴到这个内存缓冲区(注意此时缓冲区中已有棋子位图) BitBlt(hdc, x, y, g_bmChess.bmWidth, g_bmChess.bmHeight, hMemDC, 0, 0, /!!!/这里要用某个宏来替代/!!!*/); //将内存缓冲区以某种位运算方式贴到窗口中(注意此时窗口中已有什么) DeleteDC(hMemDC2); DeleteDC(hMemDC); }
时间: 2024-04-23 18:23:30 浏览: 59
国产卫星定标系数和光谱响应函数.zip
5星 · 资源好评率100%
void CutChessAndShow(HDC hdc, unsigned int x, unsigned int y) {
HDC hMemDC, hMemDC2;
hMemDC = CreateCompatibleDC(hdc);
SelectObject(hMemDC, g_hBoardBmp);
BitBlt(hdc, 0, 0, g_bmBoard.bmWidth, g_bmBoard.bmHeight, hMemDC, 0, 0, SRCCOPY); //将棋盘位图贴到窗口中
SelectObject(hMemDC, g_hMask_OuterWhite_InnerBlack);
BitBlt(hdc, x, y, g_bmChess.bmWidth, g_bmChess.bmHeight, hMemDC, 0, 0, SRCAND); //将外白内黑的蒙版图以SRCAND位运算方式贴到窗口中(注意此时窗口中已有棋盘位图)
SelectObject(hMemDC, g_hChessBmp); //将棋子位图暂时贴到一个内存缓冲区
hMemDC2 = CreateCompatibleDC(hMemDC);
SelectObject(hMemDC2, g_hMask_OuterBlack_InnerWhite);
BitBlt(hMemDC, 0, 0, g_bmChess.bmWidth, g_bmChess.bmHeight, hMemDC2, 0, 0, SRCINVERT); //将外黑内白的蒙版图以SRCINVERT位运算方式贴到这个内存缓冲区(注意此时缓冲区中已有棋子位图)
BitBlt(hdc, x, y, g_bmChess.bmWidth, g_bmChess.bmHeight, hMemDC, 0, 0, SRCPAINT); //将内存缓冲区以SRCPAINT位运算方式贴到窗口中(注意此时窗口中已有棋盘位图和前一个图层)
DeleteDC(hMemDC2);
DeleteDC(hMemDC);
}
阅读全文