【发布时间】:2013-01-21 15:22:27
【问题描述】:
我有一个自定义视图,它在 onDraw() 的画布上绘制一些位图。绘图正在工作。看代码sn -p:
@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,它可以在屏幕上应用捏缩放时缩放画布。问题是画布没有缩放。如果我将canvas.scale(mScaleFactor, mScaleFactor, pivotX, pivotY); 放在if(appInitialized) { 之前,它会缩放画布,但在它之后,绘图即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();
}
知道我哪里出错了...???
【问题讨论】:
标签: android canvas bitmap scale android-custom-view