11

onDraw長方形のセットを描画するlong メソッドを実装しました。四角形が小さすぎるので、大きく表示したいです。残念ながら、四角形の座標はデータベースに保存されているため、変更できません。を使用してキャンバスをズームインする方法はあります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 では 2 倍に引き伸ばされ、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 に答える