1

私はCanvasを使用してビットマップに描画しています。

これが私のビットマップであると考えてください(ドットは単なる空のスペースであり、xはスポットを示します):

........
......x.
........
........
........

このボックスを描くと:

###
###
###

から始めてx、私はこれを得るでしょう:

........
......##(#)
......##(#)
......##(#)
........

しかし、このビットマップがラップされているかのように、これらの「リーク」#を左端に描画する必要があります。パックマンのように。

つまり、基本的には、Canvasに(x, y)ではなく(x % width, y % height)でピクセルを描画するように指示する方法が必要です。これを達成する簡単な方法はありますか?

別の例として、(幅-1、高さ-1)で始まる同じ3x3のボックス/正方形を描画したいとします。次に、これを取得します。

##.....#
##.....#
........
........
##.....#
4

3 に答える 3

0

同じ画像をまとめることはできないと思います。あなたができることは、右側の画像が画面から消えたときに左側に2番目の画像を挿入することです。

たとえば、画像を4x4単位とします。画面(右側)から1単位離れると、右側に3x4が表示され、左側に1x4(新しい画像の)が表示されます。同じように、上下を回避できます。

于 2012-07-31T17:00:30.290 に答える
0

使えない

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

x=metrics.heightPixels;
y=metrics.widthPixels;

  u=bitmap.getWidth();
  v=bitmap.getHeight();

これらの4つの数字から、ボックスを描画する場所を簡単に把握できます。

あなたの編集への答え:正方形の一部が画面の右側からxxだけずれている場合は、画面のxxの位置に描画します。xxだけ左側からずれている場合は、screenWidth-xxの位置に描画します。

画面が「移動」する場合、つまり画面をスクロールできる場合は、もう少し行う必要があります。

于 2012-07-31T16:25:43.500 に答える
0

ドキュメントからわかる限り、探しているものを実現するための組み込み関数はありません。キャンバスオブジェクトを直接処理しているため、アプリがすべてのピクセルレベルの描画情報を処理することを前提としています。

あなたが言ったように、アプリでそれを行うには複数の方法がありますが、残念ながら箱から出してすぐにそれを行うことはできません。

于 2012-07-31T18:08:29.917 に答える