标题:提取了几个Win11图标,转换为透明png,放到命令按钮中如何做到透明效果呢?
只看楼主
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
好!
2022-10-15 16:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
windows的icon资源可以取用,不用转出png
2022-10-15 22:45
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
以下是引用吹水佬在2022-10-15 22:45:11的发言:
windows的icon资源可以取用,不用转出png


windows的icon有好多个尺寸,如Win11的ICO有:
256*256
64*64
48*48
40*40
32*32
24*24
20*20
16*16
若要用到16*16、24*24或64*64之类尺寸,感觉上,仍是转出相应精确尺寸的PNG会比较方便。
2022-10-17 07:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
win10也有,可直接从PE文件里取出
2022-10-17 13:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
通常的api默认ICON有16*16(小图标)和32*32(大图标),GDI+的api也是如此,会自动变形。
微软过去与IBM对ICON有协议16*16和32*32,不知是否与这有关。

2022-10-17 14:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
有空用VFP写个按PE格式直接从文件提取图标(256*256到16*16)。
用C简单试了一下 shell32.dll.mun 大大小小就有3000多个icon,不知有无重复。
解释PE涉及到不少结构类型数据和地址换算,用VFP写有点复杂,要慢慢试。

2022-10-18 23:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
简单转换一下 PNG-->ICO 也可以

** form.PngToIco(pngPath)
LPARAMETERS pngPath
png = FILETOSTR(pngPath)
ico = 0h000001000100+REPLICATE(0h00,8)+BINTOC(LEN(png),"4rs")+0h16000000+png
icon = FORCEEXT(pngPath,"ico")
STRTOFILE(ico,icon)
RETURN icon

** CommandButton.Init
this.Picture = thisform.PngToIco(this.Picture)
2022-10-25 15:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
Win10的也有不少,使用时可以从文件引用,用完就丢。
对于image使用在内存处理就可以,不用导出文件。



还有一组10个不同大小的,256*256 ~~~ 16*16
2022-10-27 09:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
XP好象不支持PNG图像数据的ICON
2022-10-27 09:42
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
感谢精彩示例!想不到PNG-->ICO会这么简单。

以下是引用吹水佬在2022-10-25 15:52:17的发言:

简单转换一下 PNG-->ICO 也可以

** form.PngToIco(pngPath)
LPARAMETERS pngPath
png = FILETOSTR(pngPath)
ico = 0h000001000100+REPLICATE(0h00,8)+BINTOC(LEN(png),"4rs")+0h16000000+png
icon = FORCEEXT(pngPath,"ico")
STRTOFILE(ico,icon)
RETURN icon

** CommandButton.Init
this.Picture = thisform.PngToIco(this.Picture)

2022-10-27 10:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510323-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.261340 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved