如何緩衝用drawCircle畫布方法繪製的圓?在onDraw()方法中緩衝畫布
我需要繪製兩個圓圈,然後是用戶在圓圈上掃動他的手指時的圓弧。 所以,這兩個圓將始終相同,但角度(由drawArc方法繪製)將始終不同。 我想緩衝這個圈子,而不是一遍又一遍地繪製它們...... 我得到了這段代碼的工作,但我認爲它可以更好。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
/*first circle*/
canvas.drawCircle(getWidth()/2, getHeight()/2, mRadius2, getGradient(OUTER_CIRCLE_COLOR));
/*second circle*/
canvas.drawCircle(getWidth()/2, getHeight()/2, mRadius, getGradient(INNER_CIRCLE_COLOR));
rectF.set(getWidth()/2- mRadius2, getHeight()/2 - mRadius2, getWidth()/2 + mRadius2, getHeight()/2 + mRadius2);
/*draw the arc*/
canvas.drawArc(rectF, 180, this.getSweepAngle(), true,p);
invalidate();
}
與您的代碼,我會畫的圓圈每次onDraw事件被觸發。難道沒有辦法只保留圈子的背景?我的意思是,沒有每次都繪製它們? –
您可以創建一個位圖,將圓圈繪製到位圖上,然後將位圖繪製到畫布上。請記住,畫布只是您的繪畫調用的商店。這不是你畫的表面。 – Simon