2011-09-01 63 views
0

我下面的下面的教程:試圖修改簡單的Android形狀教程使用的圖片,有麻煩

http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_2D.html

在這裏面,

Canvas canvas.drawOval(); 

被稱爲爲了有一個默認畫圈,反彈。我學習一個新的圖形框架的正常方式是建立在這個基礎上,然後升級到圖像。通常情況下,這很簡單,但我在這裏遇到了麻煩,沒有與drawOval命令(我更習慣於)相對應的「drawImage」。

相反,我試圖找出「可繪」。

所以,下面的另一個教程(特別是默認的Android‘蛇’遊戲),我試圖做:

​​ 在我看來

,然後通過資源對象,以我的球對象,得到:

img = r.getDrawable(R.drawable.ball); 

其中球是存儲在/res/drawable/ball.png

在球文件對象繪製方法(我在視圖中的OnDraw方法調用),我有:

img.draw(canvas); 

帆布是從onDraw傳遞,它本身通過一個畫布。我真的不明白是誰在調用Draw(我假設有一些內部過程),但是這與他們製作自己的畫布的蛇示例有什麼不同?

無論哪種方式,這似乎並不奏效。我沒有得到任何圖像或任何錯誤。我知道IMG至少是人口稠密的(它不是空的或任何東西),但除此之外,我不知道該怎麼辦...

如果這是Ruby(我最熟悉的語言),我會調用IMG檢查是否真的有任何東西...是否有一個相當於Java(或者我應該與斷點混爲一談)?

有什麼明顯的,我做錯了嗎?我可以不使用我正在傳遞的默認畫布,即使我明確可以繪製簡單的圖形嗎?

回答

0

啊,我想通了:

隨着抽籤橢圓形的方法,我需要設置像這樣的界限:

RectF bounds.set(ballX-ballRadius, ballY-ballRadius, ballX+ballRadius, ballY+ballRadius); 

但對於繪製對象,我得走了一步並說

img.setBounds(bounds); 

並使邊界是Rect而不是RectF。

一旦完成,瞧,事情正在渲染。

剛開始時我並沒有想到邊界是事物如何知道在哪裏渲染自己,而當你將邊界傳遞給橢圓時,你必須將它們設置爲drawable。