用户从菜单中选择剪辑选项后,应用程序将使用用户创建的矩形坐标来定义裁剪区域。在定义裁剪区域并将其选择到应用程序的设备上下文中之后,应用程序会重新绘制位图。应用程序执行这些任务,如下所示。
/ *这些变量是剪切所必需的。*/
static POINT ptUpperLeft;
static POINT ptLowerRight;
static POINT aptRect[5];
static POINT ptTmp;
static POINTS ptsTmp;
static BOOL fDefineRegion;
static BOOL fRegionExists;
static HRGN hrgn;
static RECT rctTmp;
int i;
case WM_COMMAND:
开关(wParam){
case IDM_CLIP:
hdc = GetDC(hwnd);
/*
*检索应用程序的客户端矩形和油漆
*带有默认(白色)画笔。
*/
GetClientRect(hwnd, &rctTmp);
FillRect(hdc, &rctTmp, GetStockObject(WHITE_BRUSH));
/ *使用直角坐标来定义裁剪区域。*/
hrgn = CreateRectRgn(aptRect[0].x, aptRect[0].y,
aptRect[2].x, aptRect[2].y);
SelectClipRgn(hdc, hrgn);
/ *将位图转移(绘制)到剪切的矩形中。*/
BitBlt(hdc,
0, 0,
bmp.bmWidth,bmp.bmHeight,
hdcCompatible,
0, 0,
SRCCOPY);
ReleaseDC(hwnd, hdc);
break;