VS2015 中使用GDI+(超实用,亲测可用)

  1. 新建对话框程序,在stdafx.h中添加:
#include 
#pragma comment(lib, "GdiPlus.lib")
using namespace Gdiplus;
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

 在应用程序类添加一个保护权限的数据成员:

[cpp] view plain copy
  1. ULONG_PTR m_gdiplusToken;  

然后在对话框类的OnInitDialog加上下面初始化代码:

[cpp] view plain copy
  1. BOOL CGDIDlg::OnInitDialog()
  2. {  
  3.     Gdiplus::GdiplusStartupInput StartupInput;  
  4.     GdiplusStartup(&m_gdiplusToken,&StartupInput,NULL);  
  5. }  

上面代码的作用是初始化GDI+资源。


  在应用程序类的OnFinalRelease加上下面代码:

void CGDIDlg::OnFinalRelease()
{
// TODO: 在此添加专用代码和/或调用基类
Gdiplus::GdiplusShutdown(m_gdiplusToken);
CDialogEx::OnFinalRelease();
}

上面代码的作用是销毁GDI+资源。


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 添加具体GDI绘图代码。(添加一个图像控件,ID为IDC_PIC ) 
    如在对话框CxxDlg的Onpaint中最后添加:
void CGDIDlg::OnPaint()
{
	if (IsIconic())
	{
		.../*省略*/
	}
	else
	{
		CPaintDC dc(this); // 用于绘制的设备上下文
		Graphics graphics(dc.GetSafeHdc());
		int offsetX = 100;
		int offsetY = 50;
		Point points[5] = {
			Point(offsetX+50,offsetY),
			Point(offsetX + 100,offsetY + 50),
			Point(offsetX + 50,offsetY+100),
			Point(offsetX ,offsetY + 50),
			Point(offsetX+50,offsetY)
		};
		Pen pen1(Color(0, 0, 255), 2);
		Pen pen2(Color(255, 0, 0), 2);
		graphics.DrawCurve(&pen1, points, 5);
		graphics.DrawLine(&pen1, 0, 0, 200, 100);
		/*设置平滑绘图*/
		graphics.SetSmoothingMode(SmoothingModeHighQuality);
		/*建立矩阵*/
		Matrix matrix(1.0f,0.0f,0.0f,1.0f,0.0f,0.0f);
		matrix.Translate(50.f,150.0f,MatrixOrderAppend);
		graphics.SetTransform(&matrix);
		graphics.DrawCurve(&pen2, points, 5);
		graphics.DrawLine(&pen2, 0, 0, 200, 100);
		CDialogEx::OnPaint();
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 编译运行即可。

你可能感兴趣的:(Visual,studio)