VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 724|回复: 4

请问如何把一个HICON图标与如何用GDI+的Graphics对象绘制?

[复制链接]

3

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-3 11:40:02 | 显示全部楼层 |阅读模式
我得到了一个HICON句柄,试过用Bitmap类的构造函数Bitmap(HICON hIcon)来创建一个Bitmap对象,然后用Graphics的DrawImage画图,但是图标变成不透明了(烦!),有什么办法可以在Graphics上绘出带透明的图标,谢谢大侠们,我实在找不到办法了。
回复

使用道具 举报

1

主题

2

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-4 00:28:22 | 显示全部楼层
新手路过!!!!!!
回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-5 19:18:01 | 显示全部楼层
那好像牵涉到像素混合啊,不是你所想的那么简单,你必须先将bitmap要覆盖的那一片土地(rect)取出来保存,然后判断色深,然后混合,在draw出来,这和游戏里的alpha混合Blit很像.
伪玛:
RGB16bit 565色深
pixel_high=pixel&(1111100000011111)b//取高位
pixel_mid=pixel&(0000011111100000)b//取中位
pixel_low=pixel&(0000000000011111)b//取低位
pixel_rect类似
pixeled_high=pixel_high*alpha+pixel_rect_high(1-alpha)
pixeled_mid=pixel_mid*alpha+pixel_mid_high(1-alpha)
pixeled_low=pixel_low*alpha+pixel_low_high(1-alpha)
最后将pixeled的土draw上去就可以了
alpha是一个参数在1,0之间,设定大小可以改变透明度。
还有更优的算法,我记不住了,可以去网上查
这个算法我是从书上记下来的,还没用到实际上面去,有错就别怪我了
但是要想获得动态透明效果,不混合像素那是一定不行的!!
回复

使用道具 举报

3

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-7 03:09:01 | 显示全部楼层
这个只好这么干了,谢谢你。
微软的贱淫,在Gdiplus里弄个DrawIcon函数不就行了吗,看他简介里一个都没介绍!在.Net FrameWork里有DrawIcon这个函数但是偏偏和MFC阴阳相隔,没用。
回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-25 11:36:01 | 显示全部楼层
任何图形图像只有转换成数据流才有效的,icon和位图在最终显示的时候是没有差别的,只是倒入的方法,大小,解压算法(bitmap好像没有)什么的不同,不知我说的对不对,新手,不敢说得太绝对了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表