【问题标题】:Transparency no more transparent if opacity is less than 1如果不透明度小于 1,则透明度不再透明
【发布时间】:2012-03-05 15:52:36
【问题描述】:

我有一个 32 位 PNG,表示透明正方形中间的蓝色正方形。 下面,我用 3 个不同的不透明度值显示了这个蓝色方块:

从左到右,不透明度分别为 1、0.5 和 0.1,您可以看到(如果不能,请相信您的 Photoshop 吸管)蓝色方块周围的区域仅在左侧图像上是透明的。

这是具有颜色值的相同图像:

我知道它几乎看不见,但我想知道是什么原因造成的。 加上一些图像和背景,对比度更加明显。

谢谢!

编辑:这是我的 VS 解决方案,适合那些想在家尝试的人:http://www.mediafire.com/?gt704e62d53z7ae

【问题讨论】:

  • 我可以确认我也看到了这种行为。我测试了 32 位和 8 位 PNG 图像,输出没有差异。闻起来像渲染缺陷。
  • 这也是我的猜测。你有没有想出解决方法?
  • 不,我没有找到任何解决方法。
  • 我猜 Silverlight 正在做一个premultiplied alpha blending,就像 XNA 一样。但这只是猜测。
  • 当不透明度设置为 10% 时,您预计会发生什么?对我来说,#514846 似乎是正确的颜色。

标签: silverlight png transparency opacity


【解决方案1】:

它不是抗锯齿,很可能不是Premultiplied Alpha Blending,因为它的目的是做你正在做的事情。

这看起来更像是一个渲染问题。

您是否在多个浏览器中尝试过这个?在具有不同 GPU 的不同机器上?在更新驱动程序的同一台机器上?

【讨论】:

  • 与 Chrome 17、Firefox 10 和 IE 9 的效果相同...我在 4 台不同的计算机上在浏览器内和浏览器外尝试了它,但它们都在运行 Windows 7...但我没有检查 GPU 或驱动程序是否是最新的。如果你想尝试,这里是来源:mediafire.com/?gt704e62d53z7ae
  • 很遗憾我的雇主的 websense 政策是纳粹,所以我无法抓住源头。它发生在所有浏览器上的事实让我继续认为 Windows 7 GPU 驱动程序怪癖。
  • 太糟糕了,我手头没有其他 Windows 版本...无论如何,我很高兴奖励你。 ;o)
【解决方案2】:

它可能是抗锯齿导致透明“框架”和半透明“蓝色方块”之间的混合,从而导致您看到奇怪的中间色重影。

【讨论】:

  • 我认为 Dragos 关于预乘 alpha 混合的回答是正确的。不过还是谢谢。
猜你喜欢
  • 2014-01-05
  • 2013-06-05
  • 1970-01-01
  • 2016-11-02
  • 2017-01-11
  • 2021-11-01
  • 2015-03-31
  • 2020-07-12
相关资源
最近更新 更多