2016-09-13 7 views
3

ストロークが青で塗りつぶしが赤い丸い四角形を描画したいが、ペイントクラスでストロークカラーを設定するメソッドが見つからない。どうやってやるの?キャンバスに矩形を描画するための線の色を設定する方法は?

mCanvas.drawColor(mBackgroundColor, PorterDuff.Mode.CLEAR); 
    mCanvas.setDrawFilter(mPaintFlagsDrawFilter); 

    mPaint.setStyle(Paint.Style.FILL_AND_STROKE); 
    mPaint.setColor(Color.RED); 
    mPaint.setStrokeWidth(2); 
    mPaint.setStrokeCap(Paint.Cap.ROUND); 
    mRectF.set(0, 0, mWidth, mHeight); 
    mCanvas.drawRoundRect(mRectF, 10, 10, mPaint); 
+2

赤い四角形を 'FILL'スタイルで描画し、青い四角形を同じ場所に' STROKE'スタイルで描画します。 –

答えて

5

ペイントでは一度に1色しか使用できません。

mCanvas.drawColor(mBackgroundColor, PorterDuff.Mode.CLEAR); 
mCanvas.setDrawFilter(mPaintFlagsDrawFilter); 

mFillPaint.setStyle(Paint.Style.FILL); 
mFillPaint.setColor(Color.RED); 
mStrokePaint.setStyle(Paint.Style.STROKE); 
mStrokePaint.setColor(Color.BLUE); 
mStrokePaint.setStrokeWidth(2); 
mStrokePaint.setStrokeCap(Paint.Cap.ROUND); 
mRectF.set(0, 0, mWidth, mHeight); 
mCanvas.drawRoundRect(mRectF, 10, 10, mFillPaint); 
mCanvas.drawRoundRect(mRectF, 10, 10, mStrokePaint); 

丸みのある四角形が正しく表示されない場合は、ビューの境界で切り取られることがあります。 RectFを調整して、StrokeWidthの半分を許容します。

mRectF.set(1, 1, mWidth - 1, mHeight - 1); 
関連する問題