Gdiplus的使用 gdi+
使用步骤:
1.包括相应的头文件及引入相应的lib
1 #include <GdiPlus.h>
2 #pragma comment(lib, "gdiplus.lib")
3
4 using namespace Gdiplus;
2.初始化Gdiplus
1 Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
2 ULONG_PTR m_gdiplusToken;
3
4 GdiplusStartup( &m_gdiplusToken, &m_gdiplusStartupInput, NULL );
3.加载相应的资源(此处为图片)
1 Image* m_pImage; //图片对象
2 m_pImage=Image::FromFile(_T("Test03.jpg"));
3
4 //错误判断
5 if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok))
6 {
7 if ( m_pImage )
8 {
9 delete m_pImage;
10 m_pImage = NULL;
11 }
12 return FALSE;
13 }
4.绘制图片
1 Graphics graphics( GetDC()->GetSafeHdc() );
2 graphics.DrawImage(m_pImage, 0,0,m_pImage->GetWidth(),m_pImage->GetWidth());
5.关闭Gdiplus
1 GdiplusShutdown( m_gdiplusToken );
完整示例:
1 // GdiplusTestDlg.cpp : 实现文件
2 //
3
4 #include "stdafx.h"
5 #include "GdiplusTest.h"
6 #include "GdiplusTestDlg.h"
7 #include "afxdialogex.h"
8 #include <GdiPlus.h>
9
10 #ifdef _DEBUG
11 #define new DEBUG_NEW
12 #endif
13
14 #pragma comment(lib, "gdiplus.lib")
15
16 using namespace Gdiplus;
17
18
19 //变量声明
20 Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
21 ULONG_PTR m_gdiplusToken;
22 Image* m_pImage; //图片对象
23
24 // CGdiplusTestDlg 对话框
25
26
27 CGdiplusTestDlg::CGdiplusTestDlg(CWnd* pParent /*=NULL*/)
28 : CDialogEx(CGdiplusTestDlg::IDD, pParent)
29 {
30 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
31 }
32
33 void CGdiplusTestDlg::DoDataExchange(CDataExchange* pDX)
34 {
35 CDialogEx::DoDataExchange(pDX);
36 }
37
38 BEGIN_MESSAGE_MAP(CGdiplusTestDlg, CDialogEx)
39 ON_WM_PAINT()
40 ON_WM_QUERYDRAGICON()
41 ON_WM_DESTROY()
42 END_MESSAGE_MAP()
43
44
45 // CGdiplusTestDlg 消息处理程序
46
47 BOOL CGdiplusTestDlg::OnInitDialog()
48 {
49 CDialogEx::OnInitDialog();
50
51 // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
52 // 执行此操作
53 SetIcon(m_hIcon, TRUE); // 设置大图标
54 SetIcon(m_hIcon, FALSE); // 设置小图标
55
56 // TODO: 在此添加额外的初始化代码
57 //初始化GDI+
58 GdiplusStartup( &m_gdiplusToken, &m_gdiplusStartupInput, NULL );
59
60 //加载文件
61 m_pImage=Image::FromFile(_T("E:\\Workspace\\Resource\\Chrysanthemum.jpg"));
62
63 //错误判断
64 if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok))
65 {
66 if ( m_pImage )
67 {
68 delete m_pImage;
69 m_pImage = NULL;
70 }
71 return FALSE;
72 }
73
74 MoveWindow( 0, 0, 1024, 768 );
75
76 //设置按钮位置
77 CWnd* pBtn = GetDlgItem( IDOK );
78 if ( pBtn )
79 {
80 pBtn->MoveWindow( 1024-160, 700, 60, 30 );
81 }
82 pBtn = GetDlgItem( IDCANCEL );
83 if( pBtn )
84 {
85 pBtn->MoveWindow( 1024-80, 700, 60, 30 );
86 }
87 CenterWindow();
88
89 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
90 }
91
92 // 如果向对话框添加最小化按钮,则需要下面的代码
93 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
94 // 这将由框架自动完成。
95
96 void CGdiplusTestDlg::OnPaint()
97 {
98 if (IsIconic())
99 {
100 CPaintDC dc(this); // 用于绘制的设备上下文
101
102 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
103
104 // 使图标在工作区矩形中居中
105 int cxIcon = GetSystemMetrics(SM_CXICON);
106 int cyIcon = GetSystemMetrics(SM_CYICON);
107 CRect rect;
108 GetClientRect(&rect);
109 int x = (rect.Width() - cxIcon + 1) / 2;
110 int y = (rect.Height() - cyIcon + 1) / 2;
111
112 // 绘制图标
113 dc.DrawIcon(x, y, m_hIcon);
114 }
115 else
116 {
117 CDialogEx::OnPaint();
118 }
119
120 Graphics graphics( GetDC()->GetSafeHdc() );
121 graphics.DrawImage(m_pImage, 0,0,m_pImage->GetWidth(),m_pImage->GetWidth());
122 }
123
124 //当用户拖动最小化窗口时系统调用此函数取得光标
125 //显示。
126 HCURSOR CGdiplusTestDlg::OnQueryDragIcon()
127 {
128 return static_cast<HCURSOR>(m_hIcon);
129 }
130
131
132
133 void CGdiplusTestDlg::OnDestroy()
134 {
135 CDialogEx::OnDestroy();
136
137 // TODO: 在此处添加消息处理程序代码
138 if( m_pImage )
139 {
140 try
141 {
142 delete m_pImage;
143 }
144 catch (...)
145 {
146
147 }
148 m_pImage = NULL;
149 }
150
151 GdiplusShutdown( m_gdiplusToken );
152 }
运行效果:
Gdiplus的使用 gdi+的更多相关文章
- GDI+ 笔记
1.GDI+模板 #include<windows.h> #include<GdiPlus.h> #include <time.h> #include <ma ...
- VC GDI+基础用法VC
#include "GdiPlus.h" // 使用GDI+ 命名空间 using namespace Gdiplus; // 与GDI+ 相关的其它头文件,如:GraphicsP ...
- GDI+ 或 GdiPlus 在VC6下的使用方法
1.在你的app类头文件中假如以下代码(红字显示) #if !defined(AFX_WALKLTDEMO_H__826A807C_C01D_4FF0_9248_A6BD0369F3A8__INCLU ...
- GdiPlus 一个给 Delphi 提供的新的 GDI+ 接口很好用!
尽管 GDI+ 已经有近 10 年的历史(随 Win2000 推出), 尽管 DirectX 如日中天, 但在 Windows 7 之前的版本下进行 2D 绘图还是离不开它, 微软也没有停止对它的升级 ...
- GDI+图形图像处理技术——GDIPlus绘图基础
GDI+概述 GDI在windows中定义为Graphis Device interface,及图形设备接口,是Windows API(application Programming Interfac ...
- Asp.Net Core中使用GDI+绘图提示gdiplus库找不到的问题
参考 https://www.cnblogs.com/VirtualMJ/p/9917916.html 文章中 1 2 3 yum install -y epel-release yum mak ...
- 【VC++技术杂谈007】使用GDI+进行图片格式转换
本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使 ...
- win32自绘按钮,使用GDI+(三)
解决前面的问题.实现鼠标移动进入到按钮的特效. 效果是这样的 鼠标移到按钮上,改变按钮的颜色(这里用的是直接换贴在按钮上的图片) 程序运行 鼠标进入按钮 代码 #ifndef ULONG_PTR // ...
- win32自绘按钮,使用GDI+(一)
第一次写随笔,我本来想将win32窗口的标题栏设置成渐变色,像这样的效果 但发现找不到设置标题栏属性的api,SetWindowLong也只是增减窗口的固定的样式而已.所以想到一个思路,把标题栏去掉, ...
随机推荐
- Android模拟器adb命令介绍
在SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为Android Debug Bridge,就是调试桥的作用 在SDK的Tools文件夹下包含着Android模 ...
- 【二叉树的递归】04找出二叉树中路径和等于给定值的所有路径【Path Sum II】
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个二叉树和一个和,判断这个树 ...
- CodeForces - 1017E :The Supersonic Rocket (几何+KMP,判定凸包是否同构)
After the war, the supersonic rocket became the most common public transportation. Each supersonic r ...
- 命令行启动nodejs方式 小总结
之前启动nodejs都是写一个命令行文件,如nodejs.cmd,内容为:start node E:\node\app.js. 今天突然想到之前也用过另外一种方式启动,就是在命令行通过cd命令先找到n ...
- dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架.下面就简单介绍一下RPC框架技术选型的过 ...
- js之翻牌游戏中的一个深刻感悟
先“上菜”: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- SQL介绍(1)
SQL 是用于访问和处理数据库的标准的计算机语言. SQL,指结构化查询语言,全称是 Structured Query Language. SQL 让您可以访问和处理数据库. SQL 是一种 ANSI ...
- JS取得绝对路径
在项目中,我们经常要得到项目的绝对路径,方便我们上传下载文件,JS为我们提供了方法,虽说要迂回一下.代码如下: function getRealPath(){ //获取当前网址,如: h ...
- [hdu4662]MU Puzzle(找规律)
题意:给你一个串MI,按照三种规则1:M后面的部分加倍 2:III->U 3:删去连续的两个UU.看看能否变为给定的串 解题关键:将所有的U转化为I,发现 t+k*6=2^i -> =2^ ...
- HTML5新增的结构元素
HTML5的结构 一:新增的主体结构元素 在HTML5中,为了使文档的结构更加清晰明确,追加了几个与页眉,页脚内容区块等文档结构相关联的结构元素. 1.1article元素 article元素代表文档 ...