キャンバスにグラフィックスをペイントして、色が追加されるようにしたい。例えば、私はこれを生成します:アルファでペイントする方法は?
に
をしかし、その代わりに、私はこれを取得:ハーフ&ハーフ、白、黒の背景にはちょうどアルファは両方と対話する方法を確認するために、意図的であることを
注意を背景。私はどちらのバックグラウンドでもこの仕事をすることができてうれしいです。ここに私のコードは次のとおりです。
public class VennColorsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
class VennView extends View {
public VennView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int alpha = 60, val = 255;
int ar = Color.argb(alpha, val, 0, 0);
int ag = Color.argb(alpha, 0, val, 0);
int ab = Color.argb(alpha, 0, 0, val);
float w = canvas.getWidth();
float h = canvas.getHeight();
float cx = w/2f;
float cy = h/2;
float r = w/5;
float tx = (float) (r * Math.cos(30 * Math.PI/180));
float ty = (float) (r * Math.sin(30 * Math.PI/180));
float expand = 1.5f;
Paint paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawRect(new Rect(0, 0, (int) w, (int) (h/2)), paint);
PorterDuff.Mode mode = android.graphics.PorterDuff.Mode.ADD;
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColorFilter(new PorterDuffColorFilter(ar, mode));
paint.setColor(ar);
canvas.drawCircle(cx, cy - r, expand * r, paint);
paint.setColorFilter(new PorterDuffColorFilter(ag, mode));
paint.setColor(ag);
canvas.drawCircle(cx - tx, cy + ty, expand * r, paint);
paint.setColorFilter(new PorterDuffColorFilter(ab, mode));
paint.setColor(ab);
canvas.drawCircle(cx + tx, cy + ty, expand * r, paint);
}
}
this.setContentView(new VennView(this));
}
}
誰かが私はAndroidのグラフィックスに添加剤の色でペイントする方法を理解する助けてくださいことはできますか?
ありがとうございました。とても速い! –
BTW、SDKバージョン8と互換性のあるPorterDuff.Mode.ADDの代替案がありますか?ドキュメンテーションによると、ADDはバージョン8で追加されましたが、それはあります。これはバージョン11で実際に導入され、私のウィジェットをインストールすることが許可されていない古いデバイスでクラッシュしました。 –
これは素晴らしいことです!お互いに重なるビットマップにこのテクニックを適用できますか? –