GDI介绍
GDI英文全称 Graphics Device Interface,简称GDI。我们可以使用GDI进行绘图等操作
使用
在对话框画图
画一条线和矩形
VOID GdiOut(HDC hdc)
{
::LineTo(hdc, 500, 500); // 画一条线
::Rectangle(hdc, 200, 200, 500, 500); // 画一个矩形
}
void CMFCApplication2Dlg::OnBnClickedButton1()
{
HWND hwnd = GetSafeHwnd(); // 获取窗口句柄
HDC hdc = ::GetDC(hwnd); // 获取窗口DC, GetDC函数在默认的名称空间中
GdiOut(hdc);
// 释放DC
::ReleaseDC(hwnd, hdc);
}
测试效果
在桌面进行绘图
代码
VOID GdiOut(HDC hdc)
{
::LineTo(hdc, 500, 500); // 画一条线
::Rectangle(hdc, 200, 200, 500, 500); // 画一个矩形
}
void CMFCApplication2Dlg::OnBnClickedButton2()
{
// 用nullptr做DC得到的是桌面的DC
HDC hdc = ::GetDC(nullptr);
GdiOut(hdc);
// 释放DC
::ReleaseDC(nullptr, hdc);
}
测试效果
设置画笔和画刷不同的颜色
代码
VOID GdiOut(HDC hdc)
{
HPEN hpen; // 创建新的画笔
HPEN hpenold; // 旧的画笔保存设置画笔之前的画笔
HBRUSH hbrush; // 创建画刷
HBRUSH hbrushold; // 旧的画刷保存设置画刷之前的画刷
BYTE bRed = 0;
BYTE bGreen = 0;
BYTE bBlue = 0;
COLORREF cPen = RGB(bRed, bGreen, bBlue); // 画笔颜色
COLORREF cBrush = RGB(233, 0, 255); // 画刷颜色
// 创建一个画笔
// PS_SOLID代表画的线的样式,为实心
// 10为线的宽度
hpen = CreatePen(PS_SOLID, 10, cPen);
// 创建一个实心的画刷
hbrush = CreateSolidBrush(cBrush);
// 将新创建的画笔和画刷设置到DC中,同时保存下旧的画笔和画刷
hpenold = (HPEN)SelectObject(hdc, hpen);
hbrushold = (HBRUSH)SelectObject(hdc, hbrush);
::LineTo(hdc, 500, 500); // 画一条线
::Rectangle(hdc, 200, 200, 500, 500); // 画一个矩形
// 将旧的画笔恢复
SelectObject(hdc, hpenold);
DeleteObject(hpen); // 删除画笔
// 将旧的画刷恢复
SelectObject(hdc, hbrushold);
DeleteObject(hbrush); // 删除画笔
}
void CMFCApplication2Dlg::OnBnClickedButton1()
{
HWND hwnd = GetSafeHwnd(); // 获取窗口句柄
HDC hdc = ::GetDC(hwnd); // 获取窗口DC, GetDC函数在默认的名称空间中
GdiOut(hdc);
// 释放DC
::ReleaseDC(hwnd, hdc);
}
void CMFCApplication2Dlg::OnBnClickedButton2()
{
// 用nullptr做DC得到的是桌面的DC
HDC hdc = ::GetDC(nullptr);
GdiOut(hdc);
// 释放DC
::ReleaseDC(nullptr, hdc);
}