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

  1. 新建对话框程序,在stdafx.h中添加:
#include <GdiPlus.h>
#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. 编译运行即可。
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值