Gdiplus的使用
使用步骤:
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, ,,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( , , , ); //设置按钮位置
CWnd* pBtn = GetDlgItem( IDOK );
if ( pBtn )
{
pBtn->MoveWindow( -, , , );
}
pBtn = GetDlgItem( IDCANCEL );
if( pBtn )
{
pBtn->MoveWindow( -, , , );
}
CenterWindow(); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
} // 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。 void CGdiplusTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), ); // 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + ) / ;
int y = (rect.Height() - cyIcon + ) / ; // 绘制图标
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的使用的更多相关文章
- 可能 delphi7 下稳定的最后一版本 GDIPLUS
可能 delphi7 下稳定的最后一版本 GDIPLUS 万一的 blog 说"终于, Delphi XE2 携带 GDI+ 库了 使用了较早的 http://www.progdigy.co ...
- Win32 CreateWindow GdiPlus
#include "stdafx.h" #include "TestGidPlus.h" LRESULT CALLBACK WndProc(HWND, UINT ...
- Gdiplus 贴图(助记) -------------------从资源中载入PNG图片
从资源中载入图片,亦可改为从内从中加载: void LoadResImage(int nResID,Image * &lpImage) { HINSTANCE hIns=AfxGetInsta ...
- docker之使用System.Drawing生成图片缺少Gdiplus.dll错误
1.在docker 上找到并运行需要System.Drawing的镜像 然后退出执行另一语句 docker run -it container01 进入镜像以方便安装gdiplus docker ex ...
- GDI+ 或 GdiPlus 在VC6下的使用方法
1.在你的app类头文件中假如以下代码(红字显示) #if !defined(AFX_WALKLTDEMO_H__826A807C_C01D_4FF0_9248_A6BD0369F3A8__INCLU ...
- Centos 7 Asp.net core 使用QRCoder 报“Unable to load DLL 'gdiplus'"
环境: Centos7 .Net core 2.0 问题: 使用QRCoder 报“Unable to load DLL 'gdiplus'" 同 https://q.cnblogs.com ...
- GDIPlus非典型误用一例
// ** 初始化GDI+ Gdiplus::GdiplusStartupInput gdiplusStartupInput; // ** 该成员变量用来保存GDI+被初始化后在应用程序中的GDI+标 ...
- Gdiplus的使用 gdi+
使用步骤: 1.包括相应的头文件及引入相应的lib 1 #include <GdiPlus.h> 2 #pragma comment(lib, "gdiplus.lib" ...
- GDIPlus绘制桌面歌词
功能介绍 採用GDIPlus绘制桌面歌词,相似酷狗.QQ音乐等软件.歌词支持纯色.两色渐变.三色渐变:支持高亮歌词. 实现方法 窗体部分:桌面歌词是个独立的背景透明窗体.能够移动位置,能够鼠标穿透.透 ...
随机推荐
- 10、Android--技巧
10.1.全局获取Context的技巧 在实践中有很多的地方都可以使用到Context 弹出Toast的时候需要,启动活动的时候需要.发送广播的时候需要. 操作数据库的时候需要.使用通知的时候需要.. ...
- 20145203盖泽双 《Java程序设计》第8周学习总结
20145203盖泽双 <Java程序设计>第8周学习总结 教材学习内容总结 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logger类,Logge ...
- Linux系统管理命令
Linux系统管理命令 命令 说明 stat 显示指定文件的相关信息,比ls命令显示内容更多 who 显示在线登录用户 hostname 显示主机名称 uname 显示系统信息 top 显示当前系统中 ...
- IE8 下处理select标签高度不居中
IE8: Chrome: 同样的代码可是在IE8下select的文字并不是垂直居中. 处理:给select的样式添加padding上下的内边距. 加line-height一点用都 ...
- 树莓派 log 日志 打印到 TXT
#include<stdio.h> #include <stdarg.h> #include <unistd.h> #include <stdint.h> ...
- [Nagios] Error: Template 'timman' specified in contact definition could not be not found (c
Check nagios配置文件报错例如以下: [nagios@2 etc]$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios ...
- 安装github教程
1.注意事项 .在FF和chrome会把GitHub.application当成一个应用程序下载下来,安装下载下来的程序也会失败的,只能通过ie直接安装. 2.要用https,不能用http. 2.安 ...
- js随笔记录
1.当我们尝试优化一段程序的时候,必须要同时了解语言本身和运行环境就比如说,可能教科书上写移位操作比乘法运算要快,但是这是因为CPU指令的问题,所以对于C语言成立,对于跑在VM上的语言来说则不一定了 ...
- 基于vue-cli的快速开发框架
基于vue-cli的快速规范开发框架,已封装常用组件,可直接进行基本项目开发 1,遵循eslint规则,提升代码质量 2,集成mock模拟服务端数据,提升开发效率 3,集成vuex,可直接使用开发 4 ...
- jQuery插件,判断鼠标的移入移出方向
今天用jQuery封装了一个简单的插件,判断鼠标的移入移出方向,以后的项目中可能还会遇到这样一个简单的效果,就记录下来吧! 先看结构和样式: <!DOCTYPE html> <htm ...