描画時に透過したい場合setAlphaを使ったりしますが、このときsetColorとの組み合わせに注意しなければなりません。
例えば赤い半透明の丸を書いて、その横に青い半透明の丸を書きたいなんて時
Paint paint = new Paint(); paint.setColor(linecolor); paint.setStyle(Style.FILL); //描画色_赤指定 paint.setColor(Color.RED); //半透過指定 paint.setAlpha(128); //丸描画 canvas.drawCircle(40, 40, 40f, paint); //描画色_青指定 paint.setColor(Color.BLUE); //丸描画 canvas.drawCircle(120, 40, 40f, paint);
と書いてしまうとこうなります。
青い丸が透過していません。なぜかというとsetColorはリファレンスをよく見ると、The new color (including alpha)と書いてある通り透過パラメータを含んでます。
Color.BLUEはColor.argb(255, 0, 0, 255)と値が同じなので、Color.BLUEをセットすると透過なしになってしまいます。
なのでこの場合、setColor後に再度setAlpha(128)をするかsetColor(Color.argb(128, 0, 0, 255))にすると
このように意図したとおりになります。
リファレンスはちゃんと読もうということですよね…
0 件のコメント:
コメントを投稿