2011-11-08 6 views
1

안드로이드에서 onDraw 메서드로 캔버스를 저장하고 복원하려고하는데이 코드를 사용하여 제대로 작동하지 않습니다. 이전에 익사하지 않은 라인 만 마지막에 나타 났으므로 내 코드가 아래에 있음을 알려주십시오.안드로이드에서 onDraw 메서드로 캔버스를 저장하는 방법은 무엇입니까?

public void setMData(Float pData, Float cData, int i){ 


    this.pData = pData; 
    this.cData = cData; 
    this.i = i; 

} 

public void onDraw(Canvas canvas) 

{ 


    super.onDraw(canvas); 
    canvas.restore(); 
    hs = getHeight(); 
    ws = getWidth(); 
    paint.setTextSize(15); 
    paint.setColor(Color.parseColor("#00FFCC")); 
    paint.setStrokeWidth(2); 
    ox = 30; 
    oy = hs - 30; 
    canvas.drawLine(30, 30, 30, hs - 30, paint); // Vertical Line 
    canvas.drawLine(30, hs - 30, ws - 30, hs - 30, paint); // Horizontal 
    canvas.drawText("(0,0)", 10, hs - 10, paint); 
    float secWidth = 20;// (ws-30)/mData.size(); 
    float pRatio = oy/100 * pData; 
    float cRatio = oy/100 * cData; 
    canvas.drawLine(secWidth * i, hs - pRatio, secWidth * (i + 1), hs - cRatio,paint); 
    canvas.drawText("" + cData, secWidth * (i + 1), hs - cRatio, paint); 
    canvas.save(); 
} 
+0

입니까? –

답변

0

이 시도 :

'캔버스'지역 변수 또는 필드
int saveCount; //declare this as a field 

saveCount = canvas.save(); 
..... 
canvas.restoreToCount(saveCount); 
+0

죄송합니다. 작동하지 않았습니다. – urveshpatel50

+0

어디에서 '캔버스'를 선언하셨습니까? 내 말은 필드 또는 지역 변수입니까? 또한 시도 invalidate()/postInvalidate(); –

+0

미안하지만 canvas.save() 및 canvas.restore()를 사용하지 않고도 도움을 청합니다. – urveshpatel50

관련 문제