VB6之GDI+加载PNG图片
原生的VB6不支持PNG个图片,因为刚有VB的时候还没有PNG的概念呢。不过,利用GDI+加载解析个PNG简直是砍瓜切菜般简单。
GDI+的模块是我在网上下载的,地址应该是:http://vistaswx.com/blog/article/gdip-tutorial-6-image
上代码:
'code by lichmama from cnblogs.com
'@vb6.0 gdi+ png
Private Sub DrawPng(ByVal pngfile As String, _
Optional Left As Long = &, _
Optional Top As Long = &, _
Optional zoom As Single = #) Dim Graphic As Long
Dim Image As Long
Dim imgWidth As Long
Dim imgHeight As Long Call GdipCreateFromHDC(Me.hDC, Graphic)
Call GdipSetSmoothingMode(Graphic, SmoothingModeAntiAlias)
Call GdipLoadImageFromFile(StrPtr(pngfile), Image)
Call GdipGetImageWidth(Image, imgWidth)
Call GdipGetImageHeight(Image, imgHeight)
Call GdipDrawImageRect(Graphic, Image, & + Left, & + Top, imgWidth * zoom, imgHeight * zoom) Call GdipDisposeImage(Image)
Call GdipDeleteGraphics(Graphic)
End Sub Private Sub Command1_Click()
Call DrawPng("D:\迅雷下载\rio-2-icons\rio-2-tulio-icon-2.png", -&, -&)
Call DrawPng("D:\迅雷下载\rio-2-icons\rio-2-linda-icon-2.png", &)
Call DrawPng("D:\迅雷下载\rio-2-icons\rio-2-logo.png", , &, 0.5)
Call DrawPng("D:\迅雷下载\rio-2-icons\rio-2-kids-icon.png", &, &, 0.25)
Call DrawPng("D:\迅雷下载\rio-2-icons\rio-2-nico-&-pedro-icon.png", &, &, 0.25)
Call DrawPng("D:\迅雷下载\rio-2-icons\rio-2-luiz-icon.png", &, &, 0.25)
End Sub Private Sub Form_Load()
Call InitGDIPlus
End Sub Private Sub Form_Unload(Cancel As Integer)
Call TerminateGDIPlus
End Sub
贴张图:

从资源文件加载PNG:
Private Function GdipCreateImageFromStream(ByVal resid As Integer, _
ByVal restype As String) As Long Dim Image As Long
Dim ResData() As Byte
Dim IStream As Object
Dim hGlobal As Long
Dim pMem As Long ResData = LoadResData(resid, restype)
hGlobal = GlobalAlloc(GMEM_MOVEABLE, UBound(ResData) + )
pMem = GlobalLock(hGlobal)
If pMem = Then
Debug.Print "Global Alloc Failed."
Erase ResData
Exit Function
End If
Call RtlMoveMemory(ByVal pMem, ResData(), UBound(ResData) + )
Call GlobalUnlock(hGlobal)
Call CreateStreamOnHGlobal(hGlobal, False, IStream)
Call GdipLoadImageFromStream(IStream, Image) Set IStream = Nothing
Call GlobalFree(hGlobal)
GdipCreateImageFromStream = Image
End Function
Private Sub Command1_Click()
Dim Graphics As Long
Dim Image As Long Call GdipCreateFromHDC(Me.hDC, Graphics)
Call GdipSetSmoothingMode(Graphics, SmoothingModeAntiAlias)
'调用方式如下
Image = GdipCreateImageFromStream(, "PNG")
Call GdipDrawImage(Graphics, Image, &, &) Call GdipDisposeImage(Image)
Call GdipDeleteGraphics(Graphics)
End Sub
贴张图:

VB6之GDI+加载PNG图片的更多相关文章
- win32用GDI+加载png图片作为背景图
#include <windows.h> #include <gdiplus.h> /* GDI+ startup token */ ULONG_PTR gdiplusStar ...
- GDI+ 加载PNG图片
#include <GdiPlus.h>#pragma comment(lib, "GdiPlus.lib")using namespace Gdiplus; clas ...
- VC中使用GDI+实现为按钮加载Png图片
http://blog.csdn.net/flyfish1986/article/details/5381605 VC中使用GDI+实现为按钮加载Png图片 http://www.codeprojec ...
- WebView加载HTML图片大小自适应与文章自动换行
http://www.brighttj.com/ios/ios-webview-load-html-image-adaptive.html 在很多App中都会使用到webview,尤其是在加载新闻内容 ...
- Android ListView 图片异步加载和图片内存缓存
开发Android应用经常需要处理图片的加载问题.因为图片一般都是存放在服务器端,需要联网去加载,而这又是一个比较耗时的过程,所以Android中都是通过开启一个异步线程去加载.为了增加用户体验,给用 ...
- WPF中加载高分辨率图片性能优化
在最近的项目中,遇到一个关于WPF中同时加载多张图片时,内存占用非常高的问题. 问题背景: 在一个ListView中同时加载多张图片,注意:我们需要加载的图片分辨率非常高. 代码: XAML: < ...
- Fresco 使用笔记(一):加载gif图片并播放
项目总结 --------------------------------------------------------------------- 前言: 项目中图文混合使用的太多太多了,但是绝大部 ...
- 图片_ _Android有效解决加载大图片时内存溢出的问题 2
Android有效解决加载大图片时内存溢出的问题 博客分类: Android Android游戏虚拟机算法JNI 尽量不要使用setImageBitmap或 setImageResource或 Bit ...
- Delphi7 第三方控件1stClass4000的TfcImageBtn按钮控件动态加载jpg图片例子
Delphi7 第三方控件1stClass4000的TfcImageBtn按钮控件动态加载jpg图片例子 procedure TForm1.Button1Click(Sender: TObject); ...
随机推荐
- PHP如何与搜索引擎Elasticsearch交互?
一:参考官方文档 1. Elasticsearch 5.4.0英文手册:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/sear ...
- 数组去重,call、apply、bind之间的区别,this用法总结
一.数组去重,直接写到Array原型链上. //该方法只能去除相同的数字 不会去判断24和'24'是不同的 所有数字和字符串数字是相同是重复的 Array.prototype.redup=functi ...
- Commons-lang API介绍
4.1 Commons-lang API介绍 4.1.1 StringUtils 4.1.2 StringEscapeUtils 4.1.3 ArrayUtils 4.1.4 DateUtils 4. ...
- JavaScript基础(.....持续待更)
javascript热身 一.你知道,为什么JavaScript非常值得我们学习吗? 1. 所有主流浏览器都支持JavaScript. 2. 目前,全世界大部分网页都使用JavaScript. 3. ...
- kairosdb + cassandra Setup
安装cassandra 下载 cassandra cassandra download mirror wget http://mirror.bit.edu.cn/apache/cassandra/2. ...
- Java 8 新特性1-函数式接口
Java 8 新特性1-函数式接口 (原) Lambda表达式基本结构: (param1,param2,param3) -> {代码块} 例1: package com.demo.jdk8; i ...
- 02-2--数据库MySQL:DDL(Data Definition Language:数据库定义语言)操作数据库中的表(二)
DDL对数据库的操作:http://blog.csdn.net/baidu_37107022/article/details/72334560 DDL对数据库中表的操作 1)方法概览 2)演示 //创 ...
- 逻辑卷管理lvm
逻辑卷管理LVM 一 创建逻辑卷 1准备分区或硬盘 这里使用/dev/sdb./dev/sdc两块硬盘和/dev/sda9./dev/sda10两个分区,大小都为1G,磁盘有限,我也不想这么抠的. 添 ...
- activeMQ的安装
1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip, 修改配置 ...
- 移动端页面开发适配 rem布局原理
主题 HTML移动端页面开发适配 rem布局原理 什么是适配,为什么要适配 我们拿到的设计图一般是以640,750,1080分辨率为基准设计的,而现在的手机终端各式各样,分辨率不同,逻辑像素不同 ,适 ...