GDI+ 使用指南(basic guiding of GDI plus )

其实这个也没有什么用,毕竟已经是过时的技术了。不过技术的更新跟实际的使用还是有差距了,免不了还是要用这种过时的技术,所以还是记录下来,方便以后查阅。
  GDI+没记错的话是跟随XP诞生的,是XP系统上的图形绘制系统(以前的是GDI),GDI+相对于GDI提供了一些新的特性,比如渐变的画刷,支持多种图像格式等等。不过我觉得最大的变化,还是编程模型上的变化。GDI+使用了面向对象的思想,对接口进行了类封装,使用更加方便。
  在应用程序中使用GDI+库应该遵循一下步骤:
  1.包含Gdiplus.h头文件,如果图方便,加上:using namespace Gdiplus;这样使用GDI+中的任何东西就不需要重新指定命名空间了。
  2.链接DLL的导入库Gdiplus.lib。在VS中有两种方法,一是直接在项目属性->链接->输入中填入Gdiplus.lib;二是直接使用编译器原语:#pragma comment(lib, "Gdiplus.lib")
  3.在调用任何GDI+函数前一定要调用GDI+库初始化函数GdiplusStartup(),初始化GDI+库。
  4.在确定不需要使用任何GDI+函数并且所有GDI+对象均已销毁(变量超过了生存期),需要调用GDI+关闭函数GdiplusShutdown()。GDI+支持多线程,所以可以在任意一个线程中调用。

  下面讲下在实际MFC 单/多文档程序中,如何使用GDI+图形系统(程序名叫:GdiplusTest)。
  1.在Stdafx.h头文件中添加如下代码

#include <GdiPlus.h>
#pragma comment(lib, "Gdiplus.lib")

  2.在CGdiplusTestApp类中,添加两个变量,用于GDI+初始化函数。

private:
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;

  3.在CGdiplusTestApp::InitInstance()函数中添加如下代码,一定要在pMainFrame->ShowWindow(m_nCmdShow)之前,建议添加在CWinAppEx::InitInstance()之后。

// Initialize GDI+.
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

  4.重载CGdiplusTestApp的ExitInstance()函数,然后添加GDI+关闭函数。

Gdiplus::GdiplusShutdown(gdiplusToken);

  5.在CGdiplusTestView::OnDraw(CDC* pDC)函数中使用GDI+类,显示图片lena.jpg

Gdiplus::Graphics graphics(pDC->GetSafeHdc());
Gdiplus::Image image(L"lena.jpg");
graphics.DrawImage(&image, 10, 10);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gunzip 和 unzip 解压文件到指定的目录

gunzip 和 unzip 解压文件到指定的目录 Linux 常用的压缩命令有 gzip 和 zip&#xff0c;两种压缩包的结尾不同&#xff1a;zip 压缩的后文件是 *.zip &#xff0c;而 gzip 压缩后的文件 *.gz 相应的解压缩命令则是 gunzip 和 unzip gzip 命令&#xff1a; # gzip test.txt 它会…

mysql 无法创建表_MYSQL-不能创建表

Cant create table .\ticket\user_role.frm (errno: 121)语法是对的&#xff0c;但显示上面的错误原因有三种1、表名重复2、以该名字命名的表之前创建过后来删除了&#xff0c;但是对应的.frm文件还留在磁盘上3、主键名字在全数据库范围内不是唯一的我出现的时候是第三个KEY FK…

3dmax模型转换为*.FLT格式的建模要点

要想在3dmax中建立模型&#xff0c;并将3dmax模型转换为OpenFlight模型并且能够使用&#xff0c;在Max中建模时我们必须注意以下几点&#xff1a;1.建立的模型要尽量采用比较简易的Box来表现&#xff0c;不能使用NURBS、polygon、patch建模方式建模。建议在3dmax中多采用Shape方…

一些有用的javascript实例分析(二)

一些有用的javascript实例分析(二) 原文:一些有用的javascript实例分析(二)1 5 求出数组中所有数字的和2 window.onload function ()3 {4 var oBtn document.getElementsByTagName("button")[0];5 var oInput document.getElementsByTagName("input&…

flume mysql hdfs_利用Flume将MySQL表数据准实时抽取到HDFS

一、为什么要用到Flume在以前搭建HAWQ数据仓库实验环境时&#xff0c;我使用Sqoop抽取从MySQL数据库增量抽取数据到HDFS&#xff0c;然后用HAWQ的外部表进行访问。这种方式只需要很少量的配置即可完成数据抽取任务&#xff0c;但缺点同样明显&#xff0c;那就是实时性。Sqoop使…

Gdiplus::GdiplusBase::operator new 函数不接受3 个参数问题的处理

微软的 DEBUG_NEW 和 GDI 不匹配造成的。 方法&#xff1a; 注释掉&#xff1a; #ifdef _DEBUG #define new DEBUG_NEW #endif

Careercup - Microsoft面试题 - 5428361417457664

2014-05-11 03:37 题目链接 原题&#xff1a; You have three jars filled with candies. One jar is filled with banana candies, one jar is filled with lemon candies and one jar has a mix of both. All the jars are mislabelled (i.e. all the jars have wrong labels…

erpnext mysql_windows7+docker+erpnext部署

erpnext 为开源的erp系统&#xff0c;采用python语言编写&#xff0c;本次部署采用windows7docker方式进行&#xff0c;erpnext需要运行python、redis、mariadb或者mysql、nginx。参考资料docker镜像erpnext基于ubuntu操作系统构建。pull erpnext镜像docker pull lukptr/erpnex…

一种解决运行程序报“应用程序配置不正确”的问题

在我们开发工程中&#xff0c;可能有些情况下&#xff0c;不能在本机进行调试。这个时候我们一般会使用VM&#xff08;vmware)建立一个虚拟机环境&#xff0c;然后把编译过的程序放在该虚拟机环境下执行调试。可是在某些情况下&#xff0c;不管我们编译的是debug还是release版本…

mysql group by自定义_mysql – GROUP BY和自定义顺序

我已经阅读了MySQL order by before group by的答案,但是将它应用于我的查询最后会在子查询中找到一个子查询,这是一个相当简单的案例,所以我想知道这是否可以简化&#xff1a;带有样本数据的模式为简洁起见,我省略了成员表中的其他字段.此外,在实际应用程序中还有更多表加入,但…

SharePoint 2010 RBS 安装和配置遇到的一个问题

在按照微软官方的文档按照配置的时候遇到下面问题&#xff1a; <Event xmlns"http://schemas.microsoft.com/win/2004/08/events/event"> - <System><Provider Name"RBS" /> <EventID Qualifiers"0">18639</EventID&…

X210烧写linux系统

准备&#xff1a; x210开发板USB OTG线串口线一张SD卡windows PC 说明&#xff1a; 开发板里面已经有系统&#xff0c;为wince系统&#xff0c;wince系统的调试串口是UART0准备烧写为linux系统&#xff0c;调试串口是UART2 操作及原理&#xff1a; 1. 破坏EMMC里面的bootloader…

mysql+ubunt+绿色安装_Mysql在ubuntu18上的安装及简单使用

数据相关行业都离不开数据库&#xff0c;mysql在ubuntu上的安装比在windows上安装简单多了&#xff0c;下面我记录一下自己成功安装的步骤和使用。1.安装软件首先更新一下源&#xff1a;sudo apt-get update然后安装mysql服务器端&#xff1a;sudo apt-get install mysql-serve…

小组互评(杨波组)

我组经过认真使用杨波组的软件有以下心得&#xff1a; 刘铸辉&#xff1a;界面挺美观的&#xff0c;功能实现也不错&#xff0c;对学生查询教室这方面实用性很好&#xff0c;就是功能布局界面有点小&#xff0c;希望下一个版本可以改善下 解凤娇&#xff1a;首先此软件的名字ji…

矩阵运算——平移,旋转,缩放

平时开发程序&#xff0c;免不了要对图像做各种变换处理。有的时候变换可能比较复杂&#xff0c;比如平移之后又旋转&#xff0c;旋转之后又平移&#xff0c;又缩放。 直接用公式计算&#xff0c;不但复杂&#xff0c;而且效率低下。这时可以借助变换矩阵和矩阵乘法&#xff0c…

sql字符串拼接_Mybatis的SqlSession执行sql过程

上一篇分析了SqlSession执行sql的过程&#xff0c;其中并没有分析sql是从哪里来的&#xff0c;今天就来仔细分析下。Sql来源从上一篇的最后一步执行sql那里倒推sql的来源&#xff0c;源码主要过程如下图&#xff1a;可以看到最后是通过BoundSql直接获取的sql&#xff0c;然后往…

KMP算法----java实现

字符串的模式匹配本文先实现最基本的回溯实现的已经KMP算法&#xff0c;BM算法后面博文继续实现。ps:本篇博文强烈参考了July大神的作品&#xff0c;地址http://blog.csdn.net/v_july_v/article/details/6545192.再次感激大神~~ 1.最基本的回溯实现字符串模式匹配 package com.…

深入浅出FSUIPC的作用以及使用方法

看此贴前您需要掌握的技能或知识&#xff1a;1. 有FSX或FS2004并正确安装了FSUIPC 2. 具备一定的C语言理解能力&#xff0c;C语言是一切高级语言的基础&#xff0c;单片机主要也用的C语言。 3. 掌握以下几种编程语言之一即可&#xff1a; VC\VB\C#\DELPHI\JAVA\CMFC\.NET版的C或…

PHP面向对象2之变量、方法

1 <?php2 /**3 * PHP面向对象基础 调用变量4 */5 class Computer{6 //字段成员的声明格式&#xff1a;修饰符 变量名[xxx]7 public $_name;//public 表示类外可以访问&#xff0c;为公有变量8 public $_model;9 } 10 //创建一个对象…

在 VC6 中使用 GdiPlus-安装

安装三部曲&#xff1a; Step1&#xff1a;下载 GdiPlus SDK 文件包&#xff1b; 链接地址1&#xff1a;http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip 链接地址2&#xff1a;http://www.codersource.net/samples/mfcgdiplus.zip Step2&#xff1a;安装&#xff1b; &a…