VS2012
hpp //GDI+的头文件 #include <gdiplus.h> using namespace Gdiplus; #pragma comment(lib,"gdiplus.lib") //定义两个变量 GdiplusStartupInput m_pGdiplusStartupInput; ULONG_PTR m_pGdiToken; cpp BOOL CDemoDlg::OnInitDialog() //初始化GDI+ GdiplusStartup(&m_pGdiToken, &m_pGdiplusStartupInput, NULL); void CDemoDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //先用GDI,GDI里最重要的就是DC //GDI写字 CDC* pDC = this->GetDC(); //创建字体 CFont font; font.CreatePointFont(160, "宋体"); CFont* pOldFont = pDC->SelectObject(&font); //设置为透明的 pDC->SetBkMode(TRANSPARENT); //改变颜色(红色) pDC->SetTextColor(RGB(255, 0, 0)); //输出字符串 pDC->TextOut(100, 130, "Hello GDI"); //新的字体用完,把旧的字体放回去 pDC->SelectObject(pOldFont); //GDI画线 CPen pen; pen.CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); CPen* pOldPen = pDC->SelectObject(&pen); pDC->MoveTo(100, 200); pDC->LineTo(500, 200); pDC->SelectObject(pOldPen); } void CDemoDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 //GDI+,GDI+的核心是Graphics对象 //创建图形对象,GDI+必须使用宽字符 Graphics g(this->m_hWnd);//传入窗口句柄 //创建画刷 SolidBrush brush(Color(255, 0, 0, 255)); //创建字体 FontFamily fontFamily(L"宋体"); Gdiplus::Font f(&fontFamily, 16); PointF point(200.0f, 130.0f); g.DrawString(L"Hello GDI+", 10, &f, point, &brush); //画线 Pen p(Color(255, 0, 0, 255)); g.DrawLine(&p, 100, 260, 500, 260); } void CDemoDlg::OnDestroy() { CDialogEx::OnDestroy(); // TODO: 在此处添加消息处理程序代码 //销毁窗口时卸载GDI+ GdiplusShutdown(m_pGdiToken); } Caesar卢尚宇 2021年1月22日