-
Notifications
You must be signed in to change notification settings - Fork 0
/
gdi+使用说明.txt
173 lines (110 loc) · 4.48 KB
/
gdi+使用说明.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
Lyan亲自实验过,绝对可以使用
软件平台:WinXP + VC++ 6.0 + GDI+
GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的 继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中 GDI进行了优化,并添加了许多新的功能。
遗憾的是,VC6.0并不能直接使用GDI+,下面介绍一种很方便的在VC6.0中使用GDI+的方法。步骤如下:
GDI+ for VC6.0 SDK下载地址:
http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip
1.将GDI+.rar将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中;
2.在你将要使用GDI+的工程中,完成初始化工作:
将以下代码加入StdAfx.h头文件中:
//加入的头文件
#include <comdef.h>//初始化一下com口
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#include "GdiPlus.h"
#include "GdiPlusInit.h"
using namespace Gdiplus;
#endif
#pragma comment(lib,"gdiplus.lib")
3.在程序初始化部分加入
//gdi+用到的两个变量 装载gdi+
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
4在程序退出部分前加入
//卸载gdi+
GdiplusShutdown(m_pGdiToken);
5在Project->stting->Link->Object/libary中加入gdiplus.lib
这样你的工程就可以使用GDI+了:
void CPNGDlg::OnButton1()
{
pDC =GetDC();
Graphics graphics( pDC->m_hDC);
Image image(L"walkman.png", FALSE);
graphics.DrawImage(&image, 10,10);
}
用GDI+如何显示透明背景的PNG文件?楼主ruchimy(泥秋)2005-05-26 17:16:14 在 VC/MFC / 图形处理/算法 提问
我使用如下代码:
ImageAttributes imAtt;
imAtt.SetColorKey(Color(0,0,0),Color(10,10,10),ColorAdjustTypeDefault);
graphics.SetSmoothingMode(SmoothingModeAntiAlias);
Image imageBlue(TEXT(".\\res\\NumbersBlue.png"));
graphics.DrawImage (&imageYear,Rect(cx,0,iYearWidth,iYearHeight),0,iYearHeight,iYearWidth,iYearHeight,UnitPixel,&imAtt);
显示的图片虽然是透明的,但边边有黑点.哪位高手能指点一下?
直接显示就可以了, 透明是GDI+自己处理的,
在VC6.0时边要加入以下三句到stdafx.h里边
#define ULONG_PTR ULONG
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib,"gdiplus.lib")
不要再使用OleLoadPicture了,那会让你看起来很愚蠢。同样功能的函数,你看看GDI+会有几行:
HRESULT ShowPic(const TCHAR* lpstrFile, HDC hDC, int X, int Y, int iWidth, int iHeight)
{
_ASSERT(lpstrFile);
USES_CONVERSION;
// Create bitmap object and load image
auto_ptr<Bitmap> pBmp(new Bitmap(CT2CW(lpstrFile)));
if(!pBmp.get() || Ok != pBmp->LastStatus())
return E_FAILED;
// Draw bitmap on DC
Graphic grp(hDC);
if(Ok != grp.DrawImage(pBmp.get(), X, Y, iWidth, iHeight))
return E_FAILED;
return S_OK;
}
在vc6.0中使用GDI+图形函数
作者:radcat 文章来源:本站原创 点击数:3422 更新时间:2007-3-10 15:42:48
原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?BoardID=55&ID=102037
进来总看到一些网友提出一些关于图形处理方面的问题.
例如怎样使一个字符串透明输出,怎样放大,缩小或旋转一幅图片,或将一幅bmp图片保存为jpg格式,我总是回答使用GDI+图形函数,那么怎样使用呢?
下面是我写的一个简易教程,第一次写教程,难免有疏漏还请各位网友指正批评.
GDI+图形函数,一个组在.net环境下提供的以取代GDI图形函数的类,将来会逐渐取代GDI图形函数.
如果在vc6.0中使用gdi+图形函数,那么请按以下步骤操作:
1.下载下面的rar文件将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中.
点击下载该文件
2新建一个工程(以winsdk框架为例mfc也相同)
将以下代码加入StdAfx.h头文件中
//加入的头文件
#include <comdef.h>//初始化一下com口
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#include "GdiPlus.h"
using namespace Gdiplus;
#endif
//结束
3在程序初始化部分加入
//gdi+用到的两个变量
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
//装载gdi+
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
4在程序退出部分前加入
//卸载gdi+
GdiplusShutdown(m_pGdiToken);
5在Project->stting->Link->Object/libary中加入gdiplus.lib
好了经过上面几步我们就可以在程序中使用GDI+了,先试一下吧!
显示一个透明字符串
Graphics mygraphics(hdc);//创建一个Graphics对象
SolidBrush brush(Color(100,0,0,255));//创建一个笔刷 第一项是透明度 后三项是RGB值
FontFamily fontFamily(L"Latha");选择一种字体
Font font(&fontFamily,1,FontStyleRegular,UnitInch);
PointF pointF(5,5);
mygraphics.DrawString(L"Hello Word!",-1,&font,pointF,&brush);
或显示一幅jpg图像
Graphics imgraphics(hdc);
Image image(L"001.jpg");
imgraphics.DrawImage(&image,0,0);
注意要把001.jpg考到工程目录下
下面是一个例子有兴趣的可以下载
http://bbs.bc-cn.net/viewFile.asp?BoardID=55&ID=13660
以上是我写的,请望能给大家一些帮助