0

canvas.drawBitmapのAndroidドキュメントは間違っていますか?それは言う:

public void drawBitmap(ビットマップビットマップ、左フロート、上フロート、ペイントペイント)

指定されたペイントを使用して、現在のマトリックスによって変換された、指定されたビットマップを(x、y)にある左上隅で描画します。

ええと、xとyはフロートではなく、intです。あれは正しいですか?使用可能な画面全体にビットマップ(使用可能な画面のサイズであり、同じキャンバスにバインドされている)をオーバーレイしたいとします。それは賢明なようです: canvas.drawBitmap(myBitmap, 0, 0, mPaint); そうではありませんか?しかし、それはうまくいきません。動作しているように見えるものは次のとおり canvas.drawBitmap(myBitmap, 2000000, 1000000, mPaint)です。さて、そのステートメントは、ビットマップに、画面の外側にかなりの距離を描画する必要があることを伝えているように見えます。ここで何が欠けていますか?

4

1 に答える 1

1

このメソッドxyは、intではなくfloatです。ただし、ドキュメントに記載されているように、ビットマップの座標xy座標は、に現在設定されている行列の影響を受けCanvasます。たとえばの場合ScrollView、行列には​​非常に大きな翻訳が含まれている可能性があります。

これが意味するのは、座標0, 0がの現在の原点にビットマップを描画するということCanvasです。その原点は、でクエリできる行列によって定義されますgetMatrix()

于 2013-02-08T01:14:37.360 に答える