ベクトル描画APIの使い方を学んでいますが、次のような問題があります。
キャンバスに線と円弧を描いていますが、このキャンバスを含むビューをピンチズームできます。ズームインすると、線は完全に拡大縮小されますが、円弧は拡大縮小されません。
パブリッククラスMyViewはViewを拡張します{
public MyView(Context context, AttributeSet attrs)
{
super(context, attrs);
mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
mGestureDetector = new GestureDetector(context, new GestureListener());
rects = new RectF[1000];
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.translate(mOffset.x * mScaleFactor + canvas.getWidth() * 0.5f, mOffset.y * mScaleFactor + canvas.getHeight() * 0.5f);
canvas.scale(mScaleFactor, mScaleFactor);
canvas.drawLine(-10, -5, 10, 5, paint);
canvas.drawLine(10, -10, -10, 10, paint);
paint.setStrokeWidth(1);
RectF f = new RectF(-50, -50, 50, 50);
canvas.drawArc(f, 0.f, 360.f, true, paint);
canvas.restore();
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener
{
@Override
public boolean onScale(ScaleGestureDetector detector) {
mScaleFactor *= detector.getScaleFactor();
mScaleFactor = Math.max(0.01f, Math.min(mScaleFactor, 100.0f));
invalidate();
return true;
}
}
}