使用canvas.scale函数放大画布?

时间:2012-11-12 17:24:08

标签: android zoom scale android-canvas

我已经实现了一个绘制一组矩形的长onDraw方法。矩形太小,我希望它们看起来更大。但不幸的是我无法更改矩形坐标,因为它们存储在数据库中。那么有什么方法可以使用canvas.scale()放大画布吗?

1 个答案:

答案 0 :(得分:22)

我将在前面写这个答案,说你将需要在0,0处绘制所有内容,然后对其进行缩放,最后将其翻译为正常行为。

只需在onDraw方法中执行以下操作:

canvas.save();
    canvas.translate(xValue, yValue);
    canvas.scale(xScale, yScale)
    /* draw whatever you want scaled at 0,0*/
canvas.restore();

xScale在X方向收缩或拉伸, yScale在Y方向上缩小或拉伸。

1.0是这些的默认值,所以2.0会将它拉伸一倍,0.5会缩小一半。

示例:

canvas.save();
    canvas.translate(50, 50);
    canvas.scale(0.5f, 0.5f);
    canvas.drawRect(0.0, 0.0, 5.0, 5.0, paint);
canvas.restore();

这将绘制一个长度为5.0,宽度为5.0的矩形,将长度和宽度缩小为2.5,然后将其移动到(50,50)。

结果将是一个绘制的矩形,就像你这样做:

canvas.drawRect(50.0, 50.0, 52.5, 52.5, paint);

我希望这有帮助!