文章 "研究CCanvas类如何绘制透明的图形对象" - 页 7

 
Nikolai Semko:

这就是混合其他透明色的算法:


透明度在哪里?阴影在哪里?

 
Dmitry Fedoseev:

透明度在哪里?阴影?

阴影和平滑圆的边缘。
毕竟,平滑边缘的像素颜色相同,但透明度不同。
 

尼古拉斯,我现在没心情看花。如果公式中有错误,谢谢你指出来。我没怎么检查--我用了之后就忘了。

如果能将您在 kanvas 领域的知识和成就应用到有用的方面,那将是一件好事。考虑一下吧。

 
Реter Konow:

尼古拉斯,我现在没心情看花。如果公式中有错误,谢谢你指出来。我没怎么检查--我执行了之后就忘了。

如果能将您在 kanvas 领域的知识和成就应用到有用的方面,那将是一件好事。考虑一下吧。

谢谢您的提醒,因为我根本没有想到这一点:)))
好吧,说真的,我对您的话感到非常惊讶。无用的例子只是展示了各种可能性。有经验的人总能从看似无用的东西中看到很多有用的东西。难道你不知道,我一直在谈论的东西在非常有用的东西中也非常适用吗?我所做的这一切,完全是为了实现有用的东西。我只是在做完之前不说而已。

 
Nikolai Semko:

谢谢你的提示,因为我从来没有想过这个问题:)))
嗯,说真的,我对你说的话感到非常惊讶。无用的例子只是一种可能性的展示。有经验的人总能从看似无用的东西中看到很多有用的东西。你应该知道,我一直在谈论的东西在非常有用的事物中也非常适用。我所做的这一切,完全是为了实现有用的东西。我只是在做完之后才说出来而已。

我没说你的例子没用。恰恰相反。问题是,你打算什么时候把它们应用到有用的事情上?也就是说,你正在创造一个你还没有在任何地方展示过的有用性的包装。至于它是什么,有什么用途--没人知道。:))

 
Реter Konow:

我没说你举的例子没用。恰恰相反。问题是,你什么时候才能把它们应用到有用的东西上?也就是说,你正在创造一个有用的东西的包装,而这个东西还没有在任何地方展示过。至于它是什么,有什么用途,没有人知道。:))

惊喜总比跑在火车前面好。
 
Nikolai Semko:

不是说

是阿尔法1和阿尔法2。

不仅需要计算新形成的混合色,还需要计算新形成的透明度。

...

这只是中学七年级水平的数学题。你得到一个长多项式,你必须把它还原。结果应该是一个三项式。

 
Nikolai Semko:
惊喜总比跑在火车前面好

尼古拉,大家都知道你是帆布上的头号人物。我不想争辩。如果你知道,能告诉我如何从 ColorToARGB() 得到的最终颜色中获取颜色和 Alpha 值吗?我发送了颜色和 alpha,得到了结果,然后需要从结果中获取原始颜色和 alpha。

如何实现?

 
Реter Konow:

尼古拉,大家都知道你是第一个来 "帆布 "的。我不想争辩。如果你知道,能告诉我如何从 ColorToARGB() 得到的最终颜色中获取颜色和 Alpha 值吗?发送颜色和 alpha,得到结果,然后你需要从结果中获取原始颜色和 alpha。

怎么做呢?

在 ARGB 中,R 和 B 为什么会从 RGB 互换过来,这对我来说是个谜。但这是事实。

非常简单:

   color x=0x00112233;
   color y=ColorToARGB(x,0x44); 
   color z=ColorToARGB(y,0);
   uchar a=y>>24;

调试时,我们有

z 是原始 RGB

a- 原来的 alpha。

也可以通过联合或字节移位来实现,但记录会更长。

当已知颜色成分时,我根本不使用ColorToARGB(clrRed,48)类型 的记录,而是使用十六进制形式的记录 0x30FF0000(与ColorToARGB(clrRed,48) 相同)。非常方便、清晰和快捷。

 
Dmitry Fedoseev:

这只是七年级数学的一小部分。你得到一个长多项式,你必须把它还原。结果应该是一个三项式。

如果你在图片中谷歌 "多项式 "或 "三项式",你会得到很多有趣的图片:)))