在使用winAPI绘图的话,先要定义画笔和画刷:
他们都是GUI中所定义的图形对象。
HPEN CreatePen(int 样式, int 宽度, RGB(255, 0, 0)); //建立画笔
HBRUSH CreateHatchBrush(int 样式, RGB(255, 0, 0)); //建立阴影画刷
HBRUSH CreateHatchBrush(int 宽度, RGB(0, 255, 0)); //建立单色画刷
返回值都是H开头,说明他们都是句柄,我们把这个句柄在绘图DC里使用它们即可。
HGDIOBJ SelectObject(HDC hdc,HGDIOBJ GDI对象); //选用GDI对象
BOOL DeleteObject(HGDIOBJ GDI 对象); //删除GDI对象
首先定义一些变量,定义一下画刷画笔句柄
HPEN hPen[7]; //画笔句柄
HBRUSH hBru[7]; //画刷句柄
int sPen[7] = { PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME };//画笔样式
int sBru[6] = { HS_VERTICAL,HS_HORIZONTAL,HS_CROSS,HS_DIAGCROSS,HS_FDIAGONAL,HS_BDIAGONAL };//画刷样式
新建两个函数:
void MyPrint(HDC hdc)
{
int y, x1, x2;
for (int i = 0; i < 7; i++)
{
y = (i + 1) * 30;
SelectObject(hdc, hPen[i]);
MoveToEx(hdc, 30, y, NULL); //移动目标
LineTo(hdc, 100, y); //画线
}
x1 = 120;
x2 = 180;
for (int i = 0; i < 7; i++)
{
SelectObject(hdc, hBru[i]);
Rectangle(hdc, x1, 30, x2, y); //画矩形
x1 += 70;
x2 += 70;
}
}
BOOL InitInstance(HINSTANCE hinstance)
{
HWND hwnd;
HDC hdc;
if (!(hwnd = CreateWindowEx(NULL,
"WINCLASS1", //winclass.lpszClassName设置的字符,是类的别名。
"YouWindows", //窗口的名称
WS_OVERLAPPEDWINDOW | WS_VISIBLE, //一些窗口属性
0, 0, //窗口位置
600, 450, //窗口宽高
NULL, //父窗口句柄
NULL, //附属窗口句柄
hinstance, //WinMain第一个实参,程序句柄。
NULL //null就可以了
)))
return false;
for (int i = 0; i < 7; i++)
{
hPen[i] = CreatePen(sPen[i], 1, RGB(255, 0, 0));
if (i != 6)
hBru[i] = CreateHatchBrush(sBru[i], RGB(255, 0, 0));
else
hBru[i] = CreateHatchBrush(sBru[i], RGB(0, 255, 0));
}
hdc = GetDC(hwnd);
MyPrint(hdc);
ReleaseDC(hwnd, hdc);
}
即打印出画刷