2.GDI图形绘制基础
核心代码,在WndProc派发函数,case WM_PAINT的代码中加自己的绘制函数
BOOL MyPaint(HDC hdc)
{// 创建实心画笔HPEN pen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));// 选择画笔HGDIOBJ hGdiobj = SelectObject(hdc, pen);// 移动画笔到起点POINT pt = { 0, 0 };MoveToEx(hdc, 50, 50, &pt);// 绘制矩形,会使用最近的一个画笔/画刷,并且绘制出来的图形区域会覆盖掉原来的内容Rectangle(hdc, 50, 50, 100, 100);// 绘制线条LineTo(hdc, 99, 99);// 创建实心画刷HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));HGDIOBJ hGdiobj1 = SelectObject(hdc, brush);Rectangle(hdc, 150, 150, 200, 200);// 创建阴影画刷HBRUSH brush1 = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 0, 0));HGDIOBJ hGdiobj2 = SelectObject(hdc, brush1);Rectangle(hdc, 250, 250, 300, 300);// 简单绘制文字TextOut(hdc, 250, 50, L"绘制简单文字", 6);// 绘制复杂文字RECT rect;// 设置区域SetRect(&rect, 350, 350, 700, 500);// 设置文字颜色SetTextColor(hdc, RGB(255, 0, 0));// 设置字体HFONT hFont = CreateFont(20, 18, 0, 0, 0, 0, 0, 0, GB2312_CHARSET, 0, 0, 0, 0, L"宋体");SelectObject(hdc, hFont);// 设置透明背景色//SetBkMode(hdc, TRANSPARENT); DrawText(hdc, L"绘制复杂文字", -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);// 绘制曲线POINT pi[4] = { 600, 600, 650, 650, 600, 700, 550, 650};PolyBezier(hdc, pi, 4);// 绘制圆形Arc(hdc, 500, 600, 600, 500, 0, 0, 0, 0);DeleteObject(pen);DeleteObject(brush);DeleteObject(brush1);DeleteObject(hFont);DeleteObject(hGdiobj);DeleteObject(hGdiobj1);DeleteObject(hGdiobj2);// 加载背景图片HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"G1.bmp", IMAGE_BITMAP, 500, 500, LR_LOADFROMFILE);HDC hMemDC = CreateCompatibleDC(hdc);SelectObject(hMemDC, hBitmap);BitBlt(hdc, 0, 0, 500, 500, hMemDC, 0, 0, SRCCOPY);return TRUE;
}