愿意为这个问题出一千分:有谁知道知道32位色下的点的颜色混合怎么算吗?

zyl910 2002-07-20 10:47:36
有谁知道知道32位色下的点的颜色混合怎么算吗?

比如怎样计算(R=255,G=0,B=0,Alpha=50%)(较上层点)、(R=0,G=0,B=255,Alpha=80%)(较下层点)混合后的颜色?


已发帖子:
http://www.csdn.net/expert/topic/889/889713.xml?temp=.5649225(VB区)
http://www.csdn.net/expert/topic/889/889836.xml?temp=3.063601E-02(VC区)
...全文
70 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2002-07-21
  • 打赏
  • 举报
回复
thirdapple(第三只苹果)的算法是对的

R=127.5/0.9=141.6……≈142
G=0/0.9=0
B=102/0.9=113.3……≈113
thirdapple 2002-07-21
  • 打赏
  • 举报
回复
完整的应该是:
R = R1 * Alpha1 + R2 * Alpha2 * (1-Alpha1)
G = G1 * Alpha1 + G2 * Alpha2 * (1-Alpha1)
B = B1 * Alpha1 + B2 * Alpha2 * (1-Alpha1)
Alpha = 1 - (1 - Alpha1) * ( 1 - Alpha2)
R = R / Alpha
G = G / Alpha
B = B / Alpha
经过反复验证,完全正确!
--------------------------------------------------------------------
Made by Thirdapple's Studio(http://3rdapple.51.net/)
zyl910 2002-07-21
  • 打赏
  • 举报
回复
“Alpha=1-(1-Alpha1)*(1-Alpha2)”这个公式我很早以前就想出来
可就是不知道怎样与RGB值联系起来
谁能写出完整的公式?
thirdapple 2002-07-21
  • 打赏
  • 举报
回复
有个小小的Mistake!
应该是
R=170
G=0
B=85
由此想到,jyu1221(天同)的算法并没错,而是因为Alpha值没算的缘故,
而Alpha应该为
Alpha=1-(1-Alpha1)*(1-Alpha2)
经过反复试验,完全正确!
--------------------------------------------------------------------
Made by Thirdapple's Studio(http://3rdapple.51.net/)
jyu1221 2002-07-21
  • 打赏
  • 举报
回复
R = R1 * ALPHA1 + R2 * ALPHA2 * (1-ALPHA1)
G = G1 * ALPHA1 + G2 * ALPHA2 * (1-ALPHA1)
B = B1 * ALPHA1 + B2 * ALPHA2 * (1-ALPHA1)
zyl910 2002-07-21
  • 打赏
  • 举报
回复
已满1000分:

http://www.csdn.net/expert/topic/889/889713.xml?temp=.5649225(VB区) 200分
http://www.csdn.net/expert/topic/889/889836.xml?temp=3.063601E-02(VC区) 200分
http://www.csdn.net/expert/topic/889/889850.xml?temp=.4921991(图形/游戏/多媒体区) 200分
http://www.csdn.net/expert/topic/889/889853.xml?temp=.9051172(图形处理区) 200分
http://www.csdn.net/expert/topic/890/890073.xml?temp=.5344965(Delphi区) 200分
zyl910 2002-07-21
  • 打赏
  • 举报
回复
回复人: zyl910(910:分儿,我来了!) (L2002) ( ) 信誉:93 2002-07-20 22:08:00 得分:0


假如较上层点的不透明度为100%的话
那么无论较下层点是什么,都只显示较上层点



假如你还不明白Alpha=100%的效果的话:
打开PhotoShop
建立两个图层:一个全红色、一个全蓝色,全红色的图层位于最上层


把全红色的图层的不透明度设为100%
这时无论全蓝色的图层的不透明度为多少,都是显示红色

====================================================================
同时混合后的Alpha等于多少?
RealRender 2002-07-20
  • 打赏
  • 举报
回复
DWORD r1 = 255, g1 = 0, b1 = 0;
DWORD r2 = 0, g2 = 255, b2 = 0;
float alpha1 = 0.5f;
float alpha2 = 0.8f;
DWORD r, g, b;
r = r1*alpha1+r2*alpha2;
g = g1*alpha1+g2*alpha2;
b = b1*alpha1+b2*alpha2;
if( r > 255 )r = 255;
if( g > 255 )g = 255;
if( b > 255 )b = 255;

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧