1

基本的に私はOの形を描こうとしています。2 つの楕円形を描画して、キャンバスの中央の楕円形がアクティビティの背景まで透明になるようにする方法 (背景色を一致させる以外に) はありますか?

これが私がこれまでに持っているものです:

protected void onDraw(Canvas canvas) {

    if(mainTimerAngle - 90 < 0){
        mainTimerAngle += 270;
    }

    canvas.drawArc(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()),
                                          -90, mainTimerAngle-90,true, mainTimerPaint);

    canvas.drawOval(new RectF(barWidth, barWidth, canvas.getWidth() - barWidth,
                                      canvas.getHeight() - barWidth), backgroundPaint);

}
4

1 に答える 1

1

はい、できます。内側の楕円にモードが設定されたPaintインスタンスを使用します。PorterDuff.Mode.Clear

このCLEARモードは基本的に描画したピクセルを消去します。結果として、Bitmapの背景に直接描画するのではなく、専用の描画を行う必要がありますView。そうしないと、背景を直接消去するとブラック ホールが発生することがわかります。

役立つリソースへのリンクを次に示します。さまざまなモードとその視覚的な結果の概要を説明します。

また、API デモで利用可能なサンプル コードもいくつかあり、Android SDK フォルダーで見つけることができるはずです。に注意してくださいcom.example.android.apis.graphics.Xfermodesまたは、そのクラスの最新のソース コードをここで見つけてください。

于 2013-08-23T04:06:04.190 に答える