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

以上是我写的,请望能给大家一些帮助

转载于:https://www.cnblogs.com/kangwang1988/archive/2011/03/27/1996674.html

VC利用GDI+显示透明的PNG图片相关推荐

  1. java 显示透明背景png图片

    首先理由ps生成一个背景透明的png图片,然后设置JPanel面板的透明属性,也就是panel.setOpaque(false);设置为透明 class MyPanel extends JLayere ...

  2. 我的VC++——对话框中显示GIF格式的图片

    PictureEx图片显示类支持以下格式的图片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,我特别推崇的 ...

  3. 显示透明的PNG图片

    微软提供了CImage类,使用CImage可以非常方便显示PNG图片. 1.定义一个成员变量 CImage m_img; 2.导入png void LoadPNG(CImage &cimg, ...

  4. Android中如何利用Minui显示PNG格式的图片

    在做下面操作之前,需要先干掉SurfaceFlinger进程,参考:Android中怎么方便的调试关机充电 1.Android.mk文件如下: # Copyright 2013 The Android ...

  5. 利用GridView显示SD卡的图片和两段文字

    本实例包含一个主layout,含有一个GridView,还有一个用于填充GridView一行的layout,最后是重写一个GridView的适配器类. 由于图片是sd卡里的,没有图片id可用,所以需要 ...

  6. 用CImage类来显示PNG JPG等图片

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...

  7. php 怎么支持中文图片显示,利用php怎么实现一个给图片添加中文水印的功能

    利用php怎么实现一个给图片添加中文水印的功能 发布时间:2021-01-21 15:13:48 来源:亿速云 阅读:88 作者:Leah 这篇文章给大家介绍利用php怎么实现一个给图片添加中文水印的 ...

  8. 教你如何利用灰度图透明效果制作隐藏图片.part1

    #更新 使用深色图片简单实现隐藏图片二不需要网格抠图 http://blog.csdn.net/chenzhuyu/article/details/54766757 #效果图: 在QQ聊天的时候,图片 ...

  9. 利用QPixmap显示图片

    利用QPixmap显示图片 我们来实现在窗口上显示图片,并将图片进行平移,缩放,旋转和扭曲.这里我是利用QPixmap类来实现图片显示的. 一.利用QPixmap显示图片. 1.将以前的工程文件夹进行 ...

  10. github用相对路径显示图片_【图文详解】如何利用Github在Markdown中插入图片?

    最近尝试用利用Github在Markdown中插入图片,遇到诸多问题--主要是不知道如何用GitHub上传图片! GitHub是一个纯英文网站,网上目前有的教程又都较为简略,一般只有文字说明.但缺乏图 ...

最新文章

  1. Cesium调用 WMS 、WMTS 服务
  2. java mp3播放器 无界面
  3. A-Frame 简介03
  4. flask运行多个服务器,与Flask服务器同时运行while循环
  5. avr uart打印_AVR | 在16x2 LCD上打印HELLO WORLD
  6. 移动应用开发——实验五
  7. springboot系列四、配置模板引擎、配置热部署
  8. tensorflow实战讨论
  9. 555定时器的频率检测
  10. 【linux命令】tar命令
  11. js根据经纬度计算距离
  12. java新手初次面试要注意的事项
  13. 2021-07-16思考-资本源于贪婪(与人性抗争)
  14. android Error obtaining UI hierarchy
  15. 蓝凌OA系统任意文件读取
  16. overriding managed version警告
  17. cvat标注软件入门
  18. Visio中添加连接点的方法
  19. Qt笔记(五十七)之显示图片缩略图
  20. 创意相册、3D立体相册

热门文章

  1. 项目在服务器的绝对路径,项目在云服务器上的绝对路径
  2. 套接字的作用与一般使用_05 | 使用套接字进行读写
  3. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_03-自定义查询页面-前端...
  4. 阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
  5. Java Socket总结
  6. js复制隐藏域中的文字
  7. python笔记-动态类型
  8. checked exception和runtime exception and error
  9. Java中上转型对象数组
  10. vs code调试console程序报错--preLaunchTask“build”