1

我正在学习如何使用矢量绘图 API,但我遇到了以下问题。

我在画布上绘制线条和弧线,包含此画布的视图可以被捏缩放。放大时,线条完美缩放,但弧线没有。

公共类 MyView 扩展视图 {

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;
    }
}

}

在此处输入图像描述

4

1 回答 1

0

我认为您以正确的方式执行此操作,您在我的设备上编写代码效果很好。在此处输入图像描述

于 2017-03-11T15:41:27.840 回答