CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

请教装载图片的方法有多少种?

楼主cleogo(胖子)2005-06-20 02:55:50 在 VB / API 提问

请教装载图片的方法?   我现在用的是loadpicture,感觉效率不高,   请问还有其它方法吗? 问题点数:100、回复次数:14Top

1 楼MmMVP(杜霖:(现在是DooDu的马甲。。))回复于 2005-06-20 07:04:24 得分 35

Declare   Function   LoadImage   Lib   "User32"   Alias   "LoadImageA"   (ByVal   hinst   As   Long,   ByVal   lpsz   As   String,   ByVal   un1   As   Long,   ByVal   n1   As   Long,   ByVal   n2   As   Long,   ByVal   un2   As   Long)   As   Long  
  Top

2 楼DooDu(杜霖:I want,I can(开关拉))回复于 2005-06-20 07:08:59 得分 0

汗,用错id了。。。顺便贴下完整用法:  
   
  LoadImage,   LoadImageBynum    
   
  VB声明    
  Declare   Function   LoadImage&   Lib   "user32"   Alias   "LoadImageA"   (ByVal   hInst   As   Long,   ByVal   lpsz   As   String,   ByVal   un1   As   Long,   ByVal   n1   As   Long,   ByVal   n2   As   Long,   ByVal   un2   As   Long)  
  Declare   Function   LoadImageBynum&   Lib   "user32"   Alias   "LoadImageA"   (ByVal   hInst   As   Long,   ByVal   lpsz   As   Long,   ByVal   un1   As   Long,   ByVal   n1   As   Long,   ByVal   n2   As   Long,   ByVal   un2   As   Long)    
  说明    
  载入一个位图、图标或指针    
  返回值    
  Long,执行成功则返回对象的一个句柄;零表示失败    
  参数表    
  参数   类型及说明    
  hInst   Long,要从其中载入图象的DLL或应用程序模块或实例句柄。零表示装载一幅固有图象    
  lpsz   String,欲载入图象的名字。如指定了hInst,就用这个参数指定资源或资源的标志符(标志符是一个长整数)。如hInst为空,而且已指定了LR_LOADFROMFILE,那么这个参数代表文件名(位图、图标或指针文件)。如果是个Long型值,这个参数就代表固有位图、图标或指针的编号    
  un1   Long,下述常数之一,指定了欲载入的图象类型:IMAGE_BITMAP,   IMAGE_CURSOR,   IMAGE_ICON    
  n1,n2   Long,要求的图象宽度和高度。图象会根据情况自动伸缩。如设为零,表示用图象的默认大小    
  un2   Long,下述常数的任意组合,它们都在api32.txt文件中得到了定义:    
  LR_DEFAULTCOLOR   以常规方式载入图象    
  LR_LOADREALSIZE   不对图象进行缩放处理。忽略n1和n2的设置    
  LR_CREATEDIBSECTION   如果指定了IMAGE_BITMAP,就返回DIBSection的句柄,而不是位图的句柄    
  LR_DEFAULTSIZE   如果n1和n2为零,就使用由系统定义的图象默认大小,而不是图象本身定义的大小    
  LR_LOADFROMFILE   如hInst为零,lpsz就代表要载入适当类型的一个文件的名字,仅适用于Win95    
  LR_LOADMAP3DCOLORS   将图象中的深灰、灰、以及浅灰像素都替换成COLOR_3DSHADOW,COLOR_3DFACE以及COLOR_3DLIGHT的当前设置    
  LR_LOADTRANSPARENT   与图象中第一个像素相符的所有像素都由系统替换    
  LR_MONOCHROME   将图象转换成单色    
  LR_SHARED   将图象作为一个共享资源载入。在NT   4.0中装载固有资源时要用到这个设置    
  Top

3 楼wzzwwz(皮皮鲁)回复于 2005-06-20 08:10:17 得分 0

楼上的厉害呀,两个马甲都是一星了Top

4 楼hzh_net(_风云_)回复于 2005-06-20 08:28:21 得分 5

把图片放到资源文件里  
  然后调用LoadResPicture函数引用位图,图标和光标等资源,调用格式是:  
  Set   图片变量或属性=LoadResPicture(资源名称,图片类型设置值)  
  图片类型         图片类型设置值  
  位图                 vbResBitmap  
  图标                 vbResIcon  
  光标                 vbResCursor  
   
  如:  
  Set   PicSour1.Picture   =   LoadResPicture("P1_S",   vbResBitmap)Top

5 楼tanaya(唐博士http://blog.csdn.net/tanaya)回复于 2005-06-20 08:59:54 得分 5

 
  Image1.Picture=LoadPicture("C:\1.jpg")  
   
  Top

6 楼HotUs()回复于 2005-06-20 09:38:23 得分 0

三楼正解Top

7 楼cleogo(胖子)回复于 2005-06-20 11:16:57 得分 0

hi,   MmMVP  
   
  请问LoadImage支持Gif,Jpg格式的图片吗?   另外它的装载速度比LoadPicture快吗?   还有它的兼容性怎么样?(是否支持win95/win98/win2000/winxp操作系统)Top

8 楼cleogo(胖子)回复于 2005-06-20 11:21:00 得分 0

另外各位大虾:  
   
  除了LoadImage、LoadResPicture、LoadPicture外,还有其它装载图象的方法吗?   我想统一测试一下它们...  
  Top

9 楼homezj(小吉)回复于 2005-06-20 11:42:45 得分 0

对于磁盘上的图片文件,LoadPicture是很快的,因为磁盘IO速度才是真正瓶颈,它对于API与VB内部函数是一样慢的。  
   
  LoadPicture与VB结合很好,若最终需求的是Picture对象,那API就要多出一些步骤,而且速度无明显优势。更何况,LoadPicture直接支持Gif,Jpg格式的图片,这是LoadImage不能比的。Top

10 楼homezj(小吉)回复于 2005-06-20 11:45:44 得分 0

LoadPicture使用磁盘上的图片文件,只需一次性放入Picture对象缓存,以后使用的就是这个Picture对象,不要每次赋值都LoadPicture,那当然会慢得很多。Top

11 楼cleogo(胖子)回复于 2005-06-20 18:27:04 得分 0

hi,   homezj(小吉),   您好!  
  请教怎样一次装入图片到缓存?,   是连续loadpicture到不同的图片控件上吗,那是否要很占内存啊?Top

12 楼junki(『.NET技术争霸天下』)回复于 2005-06-20 18:45:19 得分 5

上面说的很好,你先建立一个图片对象,然后再操作这个对象就可以了Top

13 楼homezj(小吉)回复于 2005-06-20 21:21:56 得分 40

不用放到图片控件上,只需利用图片对象就够了。  
   
  内存占用当然会增多,但获得了速度的提高。优化磁盘读写性能的根本出发点:就是减少磁盘IO操作次数。Top

14 楼zlt982001(乐天)回复于 2005-06-20 22:26:03 得分 10

 
  loadpicture   实际就是封装     LoadImage   的API  
  实际上慢有很多原因,如果你读入的是   jpg   等压缩格式的图片,那么慢应该是在解码jpg的过程  
  ,事实上微软的jpg   的解码效率很差,你可以使用   intel   出的   ijl   来解码   jpg   ,其官方给出效率是  
  微软的4-5倍,魔兽3就是使用该dll来解码jpg的,你可以再魔兽的目录下看到ijl15.dll的文件  
  另外   该dll   也有vb   调用的历程,具体你可以在   google   搜索Top

相关问题

  • 急问,装载图片方法,我老是不成功
  • image 控件装载图片怎么写?
  • 用什么方法可以在运行时使曾经装载过图片的TImage控件回到Canvas->Handle没有选定任何对象的状态
  • 如何返回image控件中装载的图片文件名?
  • 怎样判断图片是否装载成功
  • MFC中,用LoadBitmap装载图片,那hInst如何得到?
  • 如何让装载的图片看起来有透明效果呢?(最好能有例程)
  • 一个小问题,请问image控件当不装载图片时,应怎样附值?
  • 我记得Form中可以直接装载图片来着,怎么找不到那个属性了呢???
  • 请问怎么在网页中实现从数据库中装载并显示一个图片?

关键词

  • win95
  • 文件
  • 指针
  • 图象
  • loadpicture
  • 装载
  • 图片
  • 载入
  • loadimage
  • lr

得分解答快速导航

  • 帖主:cleogo
  • MmMVP
  • hzh_net
  • tanaya
  • junki
  • homezj
  • zlt982001

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo