使用步骤:
1.包括相应的头文件及引入相应的lib
#include <GdiPlus.h> 
#pragma comment(lib, "gdiplus.lib") 
using namespace Gdiplus;
2.初始化Gdiplus
Gdiplus::GdiplusStartupInput m_gdiplusStartupInput; 
ULONG_PTR m_gdiplusToken;   
GdiplusStartup( &m_gdiplusToken, &m_gdiplusStartupInput, NULL ); 
3. 加载相应的资源(此处为图片)
Image* m_pImage;  //图片对象
m_pImage=Image::FromFile(_T("Test03.jpg"));
//错误判断
if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok))
{
if ( m_pImage )
{
delete m_pImage;
m_pImage = NULL;
}
return FALSE;
}
4.绘制图片
Graphics graphics( GetDC()->GetSafeHdc() );
graphics.DrawImage(m_pImage, 0,0,m_pImage->GetWidth(),m_pImage->GetWidth());
5.关闭Gdiplus
GdiplusShutdown( m_gdiplusToken ); 

完整示例:
// GdiplusTestDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "GdiplusTest.h"
#include "GdiplusTestDlg.h"
#include "afxdialogex.h"
#include <GdiPlus.h> 
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#pragma comment(lib, "gdiplus.lib") 
using namespace Gdiplus;
//变量声明 
Gdiplus::GdiplusStartupInput m_gdiplusStartupInput; 
ULONG_PTR m_gdiplusToken; 
Image* m_pImage;  //图片对象
// CGdiplusTestDlg 对话框
CGdiplusTestDlg::CGdiplusTestDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CGdiplusTestDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CGdiplusTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CGdiplusTestDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_DESTROY()
END_MESSAGE_MAP()
// CGdiplusTestDlg 消息处理程序
BOOL CGdiplusTestDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
//  执行此操作
SetIcon(m_hIcon, TRUE);         // 设置大图标
SetIcon(m_hIcon, FALSE);        // 设置小图标
// TODO: 在此添加额外的初始化代码
        //初始化GDI+
    GdiplusStartup( &m_gdiplusToken, &m_gdiplusStartupInput, NULL );
        //加载文件
    m_pImage=Image::FromFile(_T("E:\\Workspace\\Resource\\Chrysanthemum.jpg")); 
        //错误判断 
    if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok))   
    { 
        if ( m_pImage ) 
        { 
            delete m_pImage; 
            m_pImage = NULL; 
        } 
        return FALSE; 
    }
MoveWindow( 0, 0, 1024, 768 ); 
//设置按钮位置 
CWnd* pBtn = GetDlgItem( IDOK ); 
if ( pBtn ) 
pBtn->MoveWindow( 1024-160, 700, 60, 30 ); 
pBtn = GetDlgItem( IDCANCEL ); 
if( pBtn ) 
pBtn->MoveWindow( 1024-80, 700, 60, 30 ); 
CenterWindow(); 
return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。
void CGdiplusTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
    Graphics graphics( GetDC()->GetSafeHdc() );   
    graphics.DrawImage(m_pImage, 0,0,m_pImage->GetWidth(),m_pImage->GetWidth()); 
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CGdiplusTestDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CGdiplusTestDlg::OnDestroy()
{
CDialogEx::OnDestroy();
// TODO: 在此处添加消息处理程序代码
    if( m_pImage ) 
    { 
        try 
        { 
            delete m_pImage; 
        } 
        catch (...) 
        { 
        } 
        m_pImage = NULL; 
    } 
    GdiplusShutdown( m_gdiplusToken );
}
运行效果:

Gdiplus的使用相关推荐

  1. 一个GDIPlus的Bug -- OutofMemory异常

    今天发现 framework2.0中的一个GDIPlus的Bug: 在Form的OnPaint事件里面写如下代码: private void Form1_Paint(object sender, Pa ...

  2. GdiPlus[6]: 五种画刷总览

    为什么80%的码农都做不了架构师?>>>    GDI+ 有五种画刷: 实心画刷: IGPSolidBrush 阴影画刷: IGPHatchBrush 纹理画刷: IGPTextur ...

  3. GdiPlus[44]: IGPGraphics (三) 关于文本绘制续 - IGPStringFormat

    IGPStringFormat 的方法和属性: //方法: IGPStringFormat.GetTabStops(); { 获取制表位 } IGPStringFormat.SetTabStops() ...

  4. GdiPlus[12]: IGPLinearGradientBrush 的其他构建方式

    为什么80%的码农都做不了架构师?>>>    第二种构建方式: TGPLinearGradientBrush.Create(矩形, 颜色1, 颜色2, 渐变模式); 第三种构建方式 ...

  5. GdiPlus[59]: 图像(十一) IGPImageAttributes 之颜色矩阵(TGPColorMatrix)变换

    IGPMatrix 矩阵 是个接口, 要通过 TGPMatrix 实例化后使用, 其内置了很多方法和属性. TGPColorMatrix 只是一个结构体, 除了矩阵数据(5*5)外, 它只有一个方法: ...

  6. 看看我最关心的动态库中到底有多少函数 - gdiplus.dll

    获取方法: 运行: tdump.exe C:\windows\system32\gdiplus.dll c:\temp\gdiplus.txt GdipAddPathArc GdipAddPathAr ...

  7. GdiPlus[57]: 图像(九) IGPBitmap 特有的属性与方法

    这包括: //属性 IGPBitmap.Pixels; { 获取或设置指定像素的颜色 }//方法 IGPBitmap.SetResolution(); { 设置分辨率 } IGPBitmap.GetH ...

  8. Gdiplus中实现双Buffer绘图

    在编写win32 GUI相关的程序的时候,最直接的方法是使用GDI API进行绘制操作.一般为了图形绘制过程中为避免绘制过程闪动,而多采用双Buffer的做法,具体是先在一个内存DC中线将图像绘制好, ...

  9. GdiPlus[21]: IGPPathGradientBrush 之 InterpolationColors

    测试效果图: 测试代码: uses GdiPlus, GdiPlusHelpers;procedure TForm1.FormPaint(Sender: TObject); constC1 = $FF ...

  10. GdiPlus[28]: IGPPen: 建立复合画笔

    设置画笔的 CompoundArray 属性可得到复合画笔. 它对应的类型是 IGPCompoundArray (IGPCompoundArray = IGPArray<Single>). ...

最新文章

  1. c++ windows获得当前工作目录文件_基于linux下Python文件操作
  2. 声称代码已开源却迟迟没更新,网友等了好几个月,最终一怒之下把作者挂网上...
  3. python做一个考试系统_请用 Python 语言编写一个简易的系统登录程序。
  4. CF1173A 【Nauuo and Votes】题解
  5. HDU 3038 How Many Answers Are Wrong
  6. Yahoo!的网站项目工作流程
  7. 安卓代码拉下来编译后怎么运行_支付宝秒开是因为用了方舟编译器?官方回应...
  8. 说说 “后台开发” 需要注意哪几点
  9. 机房的未来趋势,互联网数据中心(IDC)行业前景图
  10. Transformer升级之路:Sinusoidal位置编码追根溯源
  11. boost::hana::for_each用法的测试程序
  12. sandy引擎学习笔记: 创建一个立方体
  13. 那些一眼就被看出包装过的简历
  14. Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
  15. d3d9 抓取windows屏幕
  16. shell 执行失败重试_Smart Retry主要是用来进行方法重试
  17. Hadoop大数据简介
  18. 抖音垂直养号,关键词养号,autojs脚本自动
  19. 星际2中复刻DOTA白虎
  20. 来自 采摘~~ Python

热门文章

  1. oracle erp 设置文档,Oracle ERP管理手册
  2. soapui直接下载响应内容为本地的文件
  3. 【P20】PCM1794全平衡解码模块电路
  4. 如何下载谷歌地图高程数据
  5. python 代码运行时间获取方式
  6. 软件项目管理案例分析
  7. 如何将音乐上传到YouTube音乐
  8. Video Copilot VCReflect for Mac/win (AE倒影插件) 支持2022多帧渲染​
  9. 【SLAM学习笔记】8-ORB_SLAM3关键源码分析⑥ Optimizer(三)全局优化
  10. 数据挖掘导论课后习题答案-第三章