11

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

4

1 回答 1

27

我将通过说您需要在 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);

我希望这有帮助!

于 2012-11-13T18:20:08.280 回答