2012-03-13 2 views

答えて

25

EDIT


オリジナルの答えは間違っています。 sourceRectを使用して、描画するビットマップの一部を指定できます。 nullの場合があります。この場合、画像全体が使用されます。

は、彼が何かの下に描いていたフライヤーのコメントを1として、私はその上の注意事項を追加します。

drawBitmap(bitmap, srcRect, destRect, paint) はZ ordering (depth)とオブジェクト事項についてドローを呼び出しの順序を処理しません。

3つの図形を描画する場合は、四角形、三角形、円を描きます。正方形を上にしたい場合は、最後に描画する必要があります。


ソースは指定されていないため、何も描画されていません。

例:

ビットマップは100x100ピクセルです。あなたは全体のビットマップを描きたい。

canvas.drawBitmap(MyBitmap, new Rect(0,0,100,100), rectangle, null); 

ビットマップの左半分だけを描画します。あなたがソース矩形を指定する必要が

canvas.drawBitmap(MyBitmap, new Rect(0,0,50,100), rectangle, null); 

、ソース矩形は、どこにでも0,0から幅の長方形、ビットマップの高さをすることができます。

+2

srcが - nullになる可能性があります。描画されるビットマップのサブセット ---- dst - ビットマップが拡大/縮小されて矩形に変換されます--------あなたが言ったことを試しましたが、それでも何らかの理由で表示されませんでした.... –

+0

それが機能するのを待って、私は画面上の長方形の下にビットマップを描いていました。助けてくれてありがとう! –

+0

ビットマップを四角形の下に描画する方法を追加できますか、私は同じ問題を抱えており、数時間それに固執しています! – JehandadK

20

のRectを定義する際に覚えておくべき主な項目である:

  • はRECTが下方スクリーン座標(正のYである<右上部<底

を残し)...

私は、Rect a rguments

X、Yは、スプライト画像の左上隅である
(X, Y, X + Width, Y + Height) 

として

(left, top, right, bottom) 

注:特定の場所に画像を中央にしたい場合は、半分のスプライトの幅&高さによってこれらの値を相殺することを忘れないでください。たとえば:

int halfWidth = Width/2; 
int halfHeight = Height/2 
Rect dstRectForRender = new Rect(X - halfWidth, Y - halfHeight, X + halfWidth, Y + halfHeight); 
canvas.drawBitmap (someBitmap, null, dstRectForRender, null); 

これは、(SRC四角形がnullであるため)元画像全体を使用し、dstRectForRenderからサイズと位置を合わせて、それをスケール...と、デフォルトのペイントを使用して。

+0

この回答がないと、奇妙な嘘つきです。それを理解することは不可能です。 –

+0

このアイコンをキャンバスの真中に合わせるにはどうすればいいですか? – Gibs

1

私はなぜこれは私のために働いたのかわかりません!

Rect rectangle = new Rect(0,0,100,100); 
canvas.drawBitmap(bitmap, null, rectangle, null); 

感謝:)

関連する問題