3

Ubuntu 12.04でpycairo(実際にはcairocffi)を使用しています。システム上のライブラリはcairo1.10です。ARGB32形式の空のImageSurfaceを作成しました。たとえば、半透明の白い長方形(RGBA(1,1,1,0.5))を塗りつぶそうとすると、半透明の灰色の長方形が表示されます。

これは、半透明の背景に描画されるすべての半透明のピクセルで同じです。カイロは、透明なピクセルとのブレンドは、黒いピクセルとのブレンドと同じであると考えているようです...同じ問題が透明な表面:予期しない暗い境界線があります。

この振る舞いへの言及はどこにもありません。だから私は疑問に思っています、これはカイロの予想される動作ですか?どうすればこれを修正できますか?

4

1 に答える 1

2

私は最終的にカイロと悪いアルファブレンディングの問題を発見しました。Cairo は ARGB32 サーフェスをサポートしますが、あらかじめ乗算されたアルファのみをサポートします。つまり、ピクセルのすべてのコンポーネントは、アルファ コンポーネントで事前に乗算されて格納されます。

私はインターネット上でこれに対する答えを見つけていません.プリマルチプライされたアルファは、私が行っている操作のタイプには適していないと思います. 私は PyQt4 に切り替え、事前乗算なしで ARGB32 画像を使用しました。

PyQt4 の乗算済みアルファ画像でも試してみたところ、問題が再現されました。

于 2013-01-25T11:54:59.787 に答える