Graphics g(hMemDC);

ULONG_PTR m_gdiplusToken;
Image *pImage;

		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			// TODO: Add any drawing code here...
			RECT rt;
			GetClientRect(hWnd, &rt);
			DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
			EndPaint(hWnd, &ps);
			break;
		case WM_DESTROY:
			delete pImage;
			GdiplusShutdown(m_gdiplusToken);
			PostQuitMessage(0);
			break;
		case WM_CREATE:
			{
			
				GdiplusStartupInput gdiplusStartupInput;
				GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
				pImage = new  Image(L"d:\\My Documents\\My Pictures\\oldWoman.JPG");
				break;
			}
		case WM_ERASEBKGND:
			{
				HDC hdc = (HDC)wParam;
				RECT rc;
				GetClientRect(hWnd, &rc);
				HDC hMemDC = CreateCompatibleDC(hdc);
				HBITMAP hMemBmp = CreateCompatibleBitmap(hdc, rc.right, rc.bottom);
				SelectObject(hMemDC, hMemBmp);
				//FillRect(hMemDC, &rc, GetSysColorBrush(COLOR_WINDOW)); // 把透明背景填充为系统窗口颜色
				
				Graphics g(hMemDC);
				g.DrawImage(pImage, 0, 0, rc.right, rc.bottom);
				BitBlt(hdc, 0, 0, rc.right, rc.bottom, hMemDC, 0, 0, SRCCOPY);

				DeleteObject(hMemBmp);
				DeleteDC(hMemDC);
			}
			break;
		default:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数填空】 函数的功能是,利用两张黑白蒙版图,对带有橙色边框的棋子位图进行裁边,使得棋子贴到棋盘后不会显示橙色边框。最后在窗口中显示出来。 此函数不需要你了解课外知识,你只需要根据课程中所学位运算知识,结合函数中的注释,决定函数中用汉字占位的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); }
06-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值