onDraw()에서 캔버스에 비트 맵을 그리는 사용자 정의보기가 있습니다. 그림이 작동 중입니다. 코드 스 니펫을 살펴보십시오.Android : Canvas not scaling
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.save();
if(appInitialized) {
hsSide.draw(canvas);
scaleA.draw(canvas);
scaleB.draw(canvas);
}
canvas.scale(mScaleFactor, mScaleFactor, pivotX, pivotY);
canvas.restore();
}
화면에 핀치 확대/축소가 적용될 때 캔버스의 크기를 조절하는 ScaleGestureListener를 구현했습니다. 문제는 캔버스가 크기 조정이 아니라는 것입니다. if(appInitialized) {
앞에 canvas.scale(mScaleFactor, mScaleFactor, pivotX, pivotY);
을 입력하면 캔버스의 크기가 조정되지만 그 후에는 그림이 다시 그려집니다. hsSide.draw(canvas);
은 크기 조정되지 않습니다. 그것의 정상적인 규모로 그려집니다. 다음은 연신 방법 :
hsDide.draw :
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawBitmap(mBitmap, canvas.getWidth()/2 - mBitmap.getWidth()/2, 0, null);
}
scaleA.draw :
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawBitmap(mBitmap, canvas.getWidth()/2 - mBitmap.getWidth()/2, canvas.getHeight()/2 - mBitmap.getHeight()/2, null);
}
scaleB.draw :
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.save();
mMatrix.setRotate(currentAngle, canvas.getWidth()/2, canvas.getHeight()/2);
canvas.setMatrix(mMatrix);
canvas.drawBitmap(mBitmap, canvas.getWidth()/2 - mBitmap.getWidth()/2, canvas.getHeight()/2 - mBitmap.getHeight()/2, null);
canvas.restore();
}
,617,
내가 잘못 가고있는 어떤 생각 ... ???