问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么我用GDI+的DrawImage在窗口画png的图,但是颜色却不正常?

发布网友 发布时间:2024-10-19 04:28

我来回答

2个回答

热心网友 时间:2024-12-02 10:10

(第一次回答问题,希望能拿到分)

PNG的透明效果是通过Alpha混合实现的,通常情况下,Alpha混合使用下面的计算公式:

    Dest = Src * (Alpha/255) + Dest * (1-Alpha/255) 【公式1】

变量说明:

    Dest    目标像素的RGB值

    Src      源像素的RGB值,在这里PNG就是源

    Alpha  源像素的Alpha通道值

在Windows编程中,使用函数AlphaBlend实现Alpha混合,但是该函数的Alpha混合公式为:

    Dest = Src + Dest * (1-Alpha/255) 【公式2】

    (注:实际情况要稍微复杂一点,公式2只是其中一个特例,但也是最常用的一个特例。完整的计算公式参见MSDN中AlphaBlend的帮助)

公式2中,源没有乘以Alpha值,而是直接叠加至目标,显示效果会比公式1亮一些。


因此结论就出来了:

    暗一些的蝴蝶使用了公式1


    亮一些的蝴蝶使用了公式2(AlphaBlend函数)。下图是调用AlphaBlend的效果:



由于AlphaBlend的特立独行,为了实现与大多数软件一致的显示效果,我在使用AlphaBlend前,都要使用工具软件将PNG中透明背景像素的颜色值变成黑色(0),否则透明背景会显示出来。

热心网友 时间:2024-12-02 10:10

一般我们都是先创建一个 Bitmap bmp;
用 Graphics 把 bmp 清空为纯白色或其他色
再把需要画的东西全部都画到 bmp 上
最后把 bmp 画到控件上
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
挖矿笔记本电脑一般什么配置 ...全五分截图就可以返现两元,可是我截图了发了好评,他们就问我支付宝... 桂林数之城澜庭值得买吗? 华联都市澜庭可以买吗 云荟澜庭可以买吗 海和澜庭值得买吗 澜庭雅致能买吗 仿"瞧"写四个与"看"有关的词 用目旁表示眼的器官的字有那些 用瞅,瞧,盯,瞪,眺,瞥填空。你不要一直怎么着我,我又没做错事 天堂2游戏盟标如何设计?用什么软件?,请达人大概讲下步骤,十分感谢! 网页游戏里面的角色,用什么工具画好!为什么我用PS画了,转成BMP了就特... 红米K40推广短信信息怎么关闭 为什么股票分红比实际每股收益低 安徽国防科技职业学院毕业以后好找工作吗? 安徽国防科技职业学院办学特色 安徽国防科技职业学院学院简介 安徽国防科技职业学院就业指导 中班幼儿园学期末评语 差供单位不发目标考核奖吗 上海有哪些学校开设了保密技术专业 保密技术专业是本科还是专科 中山大学保密管理是一级学科吗 中山大学保密学院好就业吗 武汉大学保密管理专业怎么样 天津有哪些学校开设了保密管理专业 弟祝嫂生日祝福语 祝嫂生日最暖心短句 安徽六安博微长安电子怎么样 美剧《越狱》里面的字幕好多都不正确,请问哪里有正规一点的 天猫精灵ccl和cc7有什么区别 天猫精灵CC7跟小爱8 0x75c742a4指令引用的0x02cd7cc8 0x73dc8c30指令引用的0x08106cc8内存 "0x000bdcc8"指令引用的“0x000bdcc8”内存 三星c5怎么屏幕有条蓝色线上下游动 低密度脂胆固醇高怎么办 温控器与接触器搭配接法配带开关按钮 我有一个宣统元宝 不知真假 求鉴定 有价值吗 希望懂的朋友解答一下 谢... 低密度脂蛋白胆固醇偏高什么原因 配偶是外国人能申请公租房吗 ...区和望京公租房依然对外地人没有开放呢?外地人在北京怎么这么难呢... 市政府为什么不给教师发放年度考核奖 冯了性风湿跌打药酒的适用病症 阿里巴巴网页版怎么联系客服-阿里巴巴网页版联系客服的方法 RadioShack睿侠的品牌的60寸高清LED液晶怎么样 液晶电视机哪个好 液晶电视机型号推荐 茶几商标第几类 上海财经大学,西安交大,哈工大,怎样选择?主要考虑专业及就业... 女生去上海财经大学好还是哈工大好?