アンチエイリアスを使用して画像をより滑らかにします。アンチエイリアシングを使用すると、暗い枠線が画像の周りに描画されます。これは、Androidが色の黒を使用し、画像の黄色と混合するために発生します。 これは厄介な問題です!矩形を描き、アルファ値を127に設定すると、画像も静かに暗くなります。黒いAndroidを使用する代わりに、白を使用して透過性を描画する必要があります。一般的なAndroidの半透明のバグ
この問題を解決する方法はありますか?
半透過矩形をキャンバスに描画するためのソースコードの例。長方形も暗いですが、明るいはずです。私はバグを見つけたと思う http://code.google.com/p/svg-android/
:
Bitmap bmp = Bitmap.createBitmap(200, 200, Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
Paint rPaint = new Paint();
rPaint.setColor(Color.parseColor("#F7E836"));
rPaint.setAlpha(127);
rPaint.setStyle(Paint.Style.FILL);
canvas.drawRect(0, 0, 100, 100, rPaint);
画像は次のライブラリを使用してレンダリングされているSVGグラフィックです。問題はSurfaceViewです。背景は黒です。上記のコードを使用してImageViewに表示し、ImageViewの背後にあるUI要素の背景色が黒の場合、同じ半透明のバグが発生します。 SurfaceViewの背景色は常に黒です。これをsetBackgroundColorで白に変更すると、SurfaceViewは白くなりますが、OpenGLで描画された他のすべての画像よりも白い背景が描画されます。私はこれらを切り替えなければならないと思います。最初に背景色を描画し、OpenGLのものよりも描画する必要があります。
イメージは、上にリンクされたライブラリを使用してレンダリングされるSVGグラフィックスです。背景は決して変化しません。それは白いままです。 –
理由を理解するだけです。問題は、SVGが「ハードエッジ」で描かれていることです。通常、アルゴリズムはエッジカラーと背景色の間の色を検出しますが、この例ではsvgが単独でレンダリングされるため背景色はありません。その結果、任意の色が使用されます。そうですか? –
どのようにSVGをレンダリングしていますか? ImageViewsにデータを埋め込んでいるのか、画像として取り込んでキャンバスに描画していますか? – Mark