VB6中使用32位图标

支持VB6的高清真彩图标资源包(含87个ico文件) htmltable {th, td {th {pre {简介:在VB6编程环境中,图标是提升用户界面视觉效果的重要元素。本资源包提供87个支持高清与真彩色(24位色深)的.ico格式图标,包含16×16和128×128像素两种尺寸,适用于不同显示场景。通过简单的代码修改窗体的Icon属性,即可将真彩图标应用于VB6程序,显著提升应用程序的专业性与用户体验。资源经测试兼容VB6环境,是界面美化与项目开发的实用工具。 阅读详情

    看到带Alpha通道的32位图标那绚丽性感的外表,对于无法逃离“爱美之心人皆有之”这句俗话的人(包括我)早就垂涎三尺了。感谢微软给我们选择美丽的机会,能让我们自己的软件也在外表上成为让别人倾慕甚至以身相许的筹码。想起来容易,做起来才发现整容工作原来还真没那么简单。对于饱读“有志者事竟成,破釜沉舟百二秦关终属楚......”的我......嗯嗯嗯,夸张的天昏地暗、飞沙走石...... 终于皇天不负苦心人(又来了,其实我官方身份是诗人。)一个Very very简单的类诞生了。说了一堆废话,还是贴上源码吧,免得被人唾骂。
(声明:魏滔序原创,转贴请注明出处。)

请到这里下载源码:http://download.youkuaiyun.com/source/451058

' ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'
  VB6中使用32位图标
'
  Programmed by 魏滔序
'
  WebSite: http://www.chenoe.com
'
  Blog: http://blog.youkuaiyun.com/Modest
'
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
Option   Explicit

Private  Type ICONDIRENTRY
    bWidth  
As   Byte
    bHeight  
As   Byte
    bColorCount  
As   Byte
    bReserved  
As   Byte
    wPlanes  
As   Integer
    wBitCount  
As   Integer
    dwBytesInRes  
As   Long
    dwImageOffset  
As   Long
End  Type

Private  Type ICONDIR
    idReserved 
As   Integer
    idType 
As   Integer
    idCount 
As   Integer
    idEntries() 
As  ICONDIRENTRY
End  Type

Private   Declare   Function  CreateIconFromResourceEx  Lib   " user32 "  (presbits  As   Byte ,  ByVal  dwResSize  As   Long ,  ByVal  fIcon  As   Long ,  ByVal  dwVer  As   Long ,  ByVal  cxDesired  As   Long ,  ByVal  cyDesired  As   Long ,  ByVal  uFlags  As   Long )  As   Long
Private   Declare   Function  DrawIconEx  Lib   " user32.dll "  ( ByVal  hdc  As   Long ,  ByVal  xLeft  As   Long ,  ByVal  yTop  As   Long ,  ByVal  hIcon  As   Long ,  ByVal  cxWidth  As   Long ,  ByVal  cyWidth  As   Long ,  ByVal  istepIfAniCur  As   Long ,  ByVal  hbrFlickerFreeDraw  As   Long ,  ByVal  diFlags  As   Long )  As   Long
Private   Declare   Function  DestroyIcon  Lib   " user32 "  ( ByVal  hIcon  As   Long )  As   Long
Private   Declare   Sub  CopyMemory  Lib   " kernel32.dll "   Alias   " RtlMoveMemory "  ( ByRef  Destination  As  Any,  ByRef  Source  As  Any,  ByVal  Length  As   Long )

Private  m_Data()  As   Byte
Private  m_iCount  As   Integer
Private  m_iDir  As  ICONDIR

Public   Property   Get  Count()  As   Long
    Count 
=  m_iCount
End Property

Public   Property   Get  Height( Optional   ByVal  Index  As   Long )  As   Long
    Height 
=  m_iDir.idEntries(Index).bHeight
End Property

Public   Property   Get  Width( Optional   ByVal  Index  As   Long )  As   Long
    Width 
=  m_iDir.idEntries(Index).bWidth
End Property

Public   Property   Get  Length( Optional   ByVal  Index  As   Long )  As   Long
    Length 
=  m_iDir.idEntries(Index).dwBytesInRes
End Property

Public   Property   Get  Data( Optional   ByVal  Index  As   Long )  As   Byte ()
    
Dim  o  As   Long , l  As   Long , d()  As   Byte
    o 
=  m_iDir.idEntries(Index).dwImageOffset
    l 
=  m_iDir.idEntries(Index).dwBytesInRes
    
ReDim  d(l  -   1 )
    CopyMemory d(
0 ), m_Data(o), l
    Data 
=  d
End Property

Public   Function  LoadFromData(Data()  As   Byte )  As   Boolean
    
Dim  i  As   Long
    m_Data 
=  Data
    CopyMemory m_iCount, m_Data(
4 ),  2                        ' 取得图标个数
     If  m_iCount  >   0   Then
        
ReDim  m_iDir.idEntries( 0   To  m_iCount  -   1 )           ' 图标目录结构数据
         For  i  =   0   To  m_iCount  -   1
            CopyMemory m_iDir.idEntries(i), m_Data(
6   +   Len (m_iDir.idEntries(i))  *  i),  Len (m_iDir.idEntries(i))
        
Next
        LoadFromData 
=   True
    
End   If
End Function

Public   Function  LoadFromFile( ByVal  FileName  As   String )  As   Boolean
    
Dim  hFile  As   Integer
    
Dim  Data()  As   Byte

    
If   Dir (FileName)  =   ""   Then   Exit Function
    
    hFile 
=   FreeFile
    Open FileName 
For  Binary  As  #hFile
    
ReDim  Data( LOF (hFile)  -   1 )
    
Get  #hFile, , Data
    Close #hFile

    LoadFromFile 
=  LoadFromData(Data)
End Function

Public   Function  Draw( ByVal  hdc  As   Long ,  ByVal  x  As   Long ,  ByVal  y  As   Long ,  Optional   ByVal  Index  As   Long   =   0 )  As   Boolean
    
Dim  d()  As   Byte , l  As   Long , r  As   Long , w  As   Long , h  As   Long
    d 
=  Data(Index): l  =  Length(Index)
    w 
=  Width(Index): h  =  Height(Index)
    r 
=  CreateIconFromResourceEx(d( 0 ), l,  1 ,  & H30000, w, h,  0 )
    Draw 
=  DrawIconEx(hdc, x, y, r, w, h,  0 ,  0 ,  3 )  <>   0
    DestroyIcon r
End Function

Private   Sub  Class_Terminate()
    
Erase  m_Data
End Sub

示例代码:

Private   Sub  Command1_Click()
    
Dim  Icon  As   New  Icon
    
Dim  IconIndex  As   Long
    
    IconIndex 
=   3   ' 要显示的图标在图标组中的索引
    Icon.LoadFromFile App.Path  &   " a.ico "
    
    
Me .Cls
    Icon.Draw 
Me .hdc, ( Me .ScaleWidth  -  Icon.Width(IconIndex))  /   2 , ( Me .ScaleHeight  -  Icon.Height(IconIndex))  /   2 , IconIndex
    
Me .Refresh
    
    
Set  Icon  =   Nothing
End Sub
vb icon图标大全 上百种图标供你选择 是vb编程很好的资源 立即下载

相关推荐

VB程序图标大全,包含非常多的适用VB程序的图标

VB程序对图标要求严格,很多体积大,精美的图标用不了,收集了一个VB图标大全。

制作VB能用的icon

最近在搞个数据采集的程序,传感器自带了一个VB的demo程序,翻译成VC的程序还真是不太会,咋办呢,拿着VB的demo直接改改算了。。。 改程序嘛,ICON是必然要改的,不改不知道,一改还真是半天没改出来,vb各种不认我做出来的icon,一直说“无效图片”,没办法,网上各种搜索,终于找到了解决办法。 用到的工具是photoshop,首先关于如何用photoshop生成icon我就不说了...

zy3381的专栏 760

VB能用的ico图标

还在为找不到vb能用的图片而烦恼吗,这里为您提供了上千个VB中能用的ico图标

VB6中使用32位图标(第二版)

第一版参见:http://blog.youkuaiyun.com/Modest/archive/2008/05/06/2399774.aspx本版添加了hIcon属性和SetFormIcon方法,顾名思义SetFormIcon就是实现vb6窗体的32位Icon应用。实现起来非常简单,发一个消息足矣。hIcon属性会根据图标索引返回图标句柄,用这个句柄还可以实现32位Icon在托盘中的美化应用。(声明:魏滔

迈克揉索芙特 8128

modTC_Icon:让VB6支持[32位/24位]真彩色图标

  VB6本身只支持16色(4位)和256色(8位)的图标,这种图标只是早期的Windows版本所采用的 图标格式标准。现在各种高清真彩色(32位带Alpha通道、24位不带Alpha通道)早已经很流行 并且普遍使用了,但在VB6中却不能直接支持、使用。即使想把这种真彩色图标加入图标资源、 或者是把它加入ImageList控件中,也会被提示“无效图片”而不能加入。记得论坛中曾经有某 位高人说过,VB6的Form是支持真彩色图标的,可以给窗体设置真彩色图标。   昨天上午我试了一下,新建一个标准EXE工程,然后随意找了一个高清真彩图标文件,给工 程的Form1设置Icon属性,成功了……… 但是,感觉它显示的图标有点怪异,总觉得有些不对 劲呢…… 于是,我把这个高清图标文件中32×32和16×16这两种规格的真彩色图标单独提取 出来,分别保存为一个.ico格式的文件,然后再用这两个图标文件来给它设置Icon属性。果然, 这两个文件在操作时VB6都提示“无效图片”!!!这就说明:VB6是不支持真彩色图标的。最 开始时“能设置成功”,只不过是因为它从图标组中找到了256色的、它能支持的格式罢了。   闲话不多说了,这个模块进行了简单的封装,提供了一些基础的操作功能。源码中有比较 详细的注释,使用起来应该是很简单的,就不再写什么“应用示例代码”了。首先要调用接口 函数装载图标,从图标文件加载就调用LoadFromFile(),从字节数组加载就调用LoadData()。 加载成功后,即可调用其它接口来使用图标对象了,比如用GDI方式把图标画到窗口内、或者画 到某个PictureBox上、给自己的窗口或别的程序窗口设置一个真彩色图标等。虽然在“资源” 中不能以“图标”的方式把真彩图标加入,但是,却可以按“自定义资源”的方式把图标文件 装入,使用时读取出对应的资源数据,然后调用函数LoadFromData()进行加载。加载成功就可 以使用里面的真彩色图标了。   这个模块只提供了一些基本的功能,如果有需要可以自己再进行扩展。还有就是没有进行 异常处理,因此要求用来加载的文件必须是正确的图标文件、并且可以读取;数组数据则必须 是合法的图标文件数据。否则可能会引起异常,你也可以修改代码进行异常捕获处理。

vb6.0可用的ico图标

这里有VB6.0可用的ICO图标,样式很多,可供选择

VB6使用32位图标 代码收藏

看到带Alpha通道的32位图标那绚丽性感的外表,对于无法逃离“爱美之心人皆有之”这句俗话的人(包括我)早就垂涎三尺了。对于饱读“有志者事竟成,破釜沉舟百二秦关终属楚......”的我......嗯嗯嗯,夸张的天昏地暗、飞沙走石...... 终于皇天不负苦心人(又来了,其实我官方身份是诗人。)一个Very very简单的类诞生了。说了一堆废话,还是贴上源码吧,免得被人唾骂。' VB6中使用32位图标。

470

vb6.0专用精美图标(方便、直接使用)

本文件为vb6.0专用精美图标,格式已经转化好,可以直接用于vb上,图标精美且齐全!

VB使用32位图标 代码收藏

看到带Alpha通道的32位图标那绚丽性感的外表,对于无法逃离“爱美之心人皆有之”这句俗话的人(包括我)早就垂涎三尺了。感谢微软给我们选择美丽的机会,能让我们自己的软件也在外表上成为让别人倾慕甚至以身相许的筹码。想起来容易,做起来才发现整容工作原来还真没那么简单。对于饱读“有志者事竟成,破釜沉舟百二秦关终属楚......”的我......嗯嗯嗯,夸张的天昏地暗、飞沙走石...... 终于皇天不负苦

国际海员 1728

VB6图标制作

安装PS。。。。 把ICOFormat.8bi 插件放在 ps 安装相应目录下类似 C:\Program Files (x86)\Adobe\Photoshop CS\增效工具\文件格式 在PS 中打开已经存在的素材,Alt+I I 设置图像大小 解除约束比例 同时 宽度和高度 48x48像素 另存为 ICO(Windows Icon) (*.ICO;*.CUR)格式, ok,VB6,DELPHI7等都可以使用了。

VB图标集锦_VB图标_图标_vb图标_资源_VB_

VB企业版安装包自带的图标文件,供Visual Basic程序员使用

vb资源编辑器中中加载位图提示“无效的位图文件”是什么原因?

VB6不支持32位的图标文件。只要把32位的图标转换为24位图标就能用了。具体方法:首先要安装IcoFX,之后将汉化文件复制到IcoFX的语言文件夹中,并打开IcoFX。设置语言为汉语。导入一个图片,比如一个PNG图片,之后选择24位,48×48,注意不要选择32位,否则VB在导入图标时会提示“无效图片”。最后存储成ICO文件。

DanCaoFan085的专栏 2559

【全解析 | PTA】浙大版《Python 程序设计》题目集-第一章

Python浙大版PTA题解

wzhh_的博客 5526

教程:VB6写的32位dll插件升级支持64位Inventor

        64位现在比较流行了,所以有很多朋友想把过去用VB6写的Inventor dll插件(32位)做个升级,以便支持64位Inventor。有两种方法可以实现这个目标。一种是把dll插件修改成exe插件,第二种方法是把VB6插件转变成VB.NET插件。Brian的博客对这两种方法有非常详细地介绍。    以下转载至:http://modthemachine.typepad.co

CAD定制乐园 7000

Kerberos基础及KDC服务(理论知识)

kerberos基础理论讲解+KDC服务

Siobhan_Mxin的博客 9711

记录:MCGS和正弦变频器通讯

触摸屏实现对变频器:启动、停止、频率设定、频率读取、电压读取、电流读取。通讯方式Modbus RTU。

m0_61837027的博客 1026

VB判断系统是32位还是64位

用VB来判断windows系统是32位还是64位 用VB程序来判断系统是32位还是64位,主要还是靠API来帮忙实现此功能。实现起来也很简单,先在窗体模块里申明API函数: Private Declare Function GetProcAddress Lib “kernel32” (ByVal hModule As Long, ByVal lpProcName As String) As Long Private Declare Function GetModuleHandle Lib “kernel32

weixin_53345819的博客 1541

Unity物理驱动3D汽车实现:从刚体控制到参数调优

在游戏开发中,刚体物理是实现真实物体运动与交互的核心技术。通过Unity的物理引擎,开发者可以模拟重力、碰撞、摩擦力等物理行为,为游戏世界注入真实感。其技术价值在于能够以符合物理规律的方式驱动游戏对象,避免穿墙、无视惯性等问题,从而提升游戏体验的真实性和沉浸感。这一原理广泛应用于角色控制、车辆模拟、物体破坏等场景。本文以3D小汽车为例,详细解析了如何通过Rigidbody组件施加力与扭矩,并利用C#脚本实现玩家输入逻辑,完成一辆可操控、能碰撞的物理驱动汽车。文中重点探讨了AddForce与角速度控制两种方案

weixin_34380948的博客 501

下载VB6IDEMouseWheelAddin.dll让VB6支持鼠标滚轮插件

VB6IDEMouseWheelAddin.dll下载,让VB6支持鼠标滚轮插件,VB6鼠标下拉支持

Excel工作圈的博客 4513

第244篇 视觉SLAM后端之BA优化——Bundle Adjustment的原理

本文介绍了SLAM后端优化中的Bundle Adjustment(BA)技术。BA通过同时优化相机位姿和3D路标点位置,最小化重投影误差,解决前端估计的累积误差问题。文章详细讲解了BA的数学原理,包括目标函数构建、Gauss-Newton法和Levenberg-Marquardt法求解过程,以及利用稀疏性和Schur补加速计算的关键技术。对比了全量BA和增量BA的优缺点,并介绍了Ceres、g2o等工程实现工具。BA作为SLAM后端的核心算法,其理解深度直接影响系统性能优化能力。

郑伟强dev的专栏 345
上一篇: 利用 Microsoft 的 HTML 分析器来获得 Web 站点的数据
下一篇: 突破:VB6中使用安全多线程
迈克揉索芙特
博客等级 码龄24年 865粉丝 71原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值