1.在你將要使用GDI+的工程中,完成初始化工作,將以下代碼加入StdAfx.h頭文件中:
//加入的頭文件
#include <comdef.h>//初始化一下com口
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#include "GdiPlus.h"
using namespace Gdiplus;
#endif
#pragma comment(lib,"gdiplus.lib")
2.在程序初始化部分加入
//gdi+用到的兩個變量 裝載gdi+
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
3.在程序退出部分前加入
//卸載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+是Windows XP中的一個子系統,它主要負責在顯示屏幕和打印設備輸出有關信息,它是一組通過C++類實現的應用程序編程接口。顧名思義,GDI+是以前版本GDI的繼承者,出於兼容性考慮,Windows XP仍然支持以前版本的GDI,但是在開發新應用程序的時候,開發人員爲了滿足圖形輸出需要應該使用GDI+,因爲GDI+對以前的Windows版本中GDI進行了優化,並添加了許多新的功能。
遺憾的是,VC6.0並不能直接使用GDI+,下面介紹一種很方便的在VC6.0中使用GDI+的方法。步驟如下:
1.將GDI+.rar將其中的Includes和Lib中的文件拷到vc目錄下的Includes和Lib文件夾中;
GDI+ for VC6.0 SDK下載地址:
http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip
2.在你將要使用GDI+的工程中,完成初始化工作:
將以下代碼加入StdAfx.h頭文件中:
//加入的頭文件
#include <comdef.h>//初始化一下com口
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#include "GdiPlus.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
以上是我寫的,請望能給大家一些幫助