2

私は、ビットマップでブレンド効果を「乗算」するためのより高速な方法を探していました。使用してみPorterDuff.Multiplyましたが、アルファチャネルを含むビットマップでは目的の結果が得られず、アルファが0の場合は黒になります。

読んだことがありますが、私が求めている効果(photoshop / gimpの「乗算」レイヤーブレンディング)を実現する唯一の方法は、ピクセルごとに効果を適用することです。

OpenGLはアプリのオプションではありません。

ウィキペディアが提案するブレンドモードのアルゴリズムを正しく理解しているかどうかはわかりません。

TopColour * BottomColour / 255

だろう:

ColorC.R = ColorA.R * ColorB.R / 255;
ColorC.G = ColorA.G * ColorB.G / 255;
ColorC.B = ColorA.B * ColorB.B / 255;
// Alpha = Alpha?

// This example is suggesting Android.Graphics.Color.A/R/G/B is writeable, 
// it's not - this is just for readability.
// ColorA = Top, ColorB = Bottom, ColorC = Result

を変換Color.ToArgbして整数で作業する方が速いでしょうか?そして最後に、乗算効果を正しく計算していますか?正しく表示されません:(

私は立ち往生しています、どんな助けでも歓迎です。

ありがとうございました。

4

1 に答える 1

0

高速化が必要な場合は、Renderscript ( http://developer.android.com/guide/topics/renderscript/index.html ) を調べる必要があります。

この Google のビデオでも、多かれ少なかれ必要なものはすべて示されています。http://www.youtube.com/watch? v=gbQb1PVjfqM (Google IO 2012 - Doing More With Less: Being a Good Android Citizen)

于 2012-09-28T08:55:54.740 に答える