2012-08-17 139 views
1

當前我正在編寫一個程序,該程序應該將圖像添加到畫布,然後將該畫布添加到相對佈局。我遇到的問題是,當我調用它時,佈局顯示,但畫布未在佈局上繪製。將畫布添加到相對佈局

canvas = (RelativeLayout) findViewById(R.id.canvasLayout);     
imageCanvas = new Canvas(); 
mainImage = BitmapFactory.decodeResource(getResources(), R.drawable.image); 

imageCanvas.drawBitmap(mainImage, 50, 50, null); 

imageCanvas.drawColor(Color.BLACK); 
canvas.draw(imageCanvas); 

這是試圖將圖像添加到畫布,然後將畫布添加到佈局的代碼。

我完全失去了試圖解決這個問題的方法。

+0

您是否需要對圖像做任何事情,比如在頂部繪製或任何東西? – 2012-08-17 11:41:48

+0

據我所知不是。後來它將不得不縮放和旋轉,但現在我只是試圖讓它顯示。它的佈局也是空的。 – 2012-08-17 12:02:14

回答

0

以下內容將以編程方式將圖像從位圖資源中添加到佈局中,該圖像聽起來像是您想要執行的操作。如果您需要在該圖像的頂部繪圖,那麼您需要通過擴展ImageView並重寫onDraw()來製作自定義組件。

canvas = (RelativeLayout) findViewById(R.id.canvasLayout);     
imageView = new ImageView(getApplicationContext()); 
mainImage = BitmapFactory.decodeResource(getResources(), R.drawable.image); 
imageView.setImageBitmap(mainImage); 
canvas.addView(imageView); 
+0

謝謝。通過這段代碼管理得到我所需要的一切。 – 2012-08-18 00:50:27

+0

不客氣。 – 2012-08-18 11:27:14

3

的canvas.draw(imageCanvas)叫你實際使用的是平布(在RelativeLayout的)到imageCanvas(Canvas對象) - 你打算可能不是什麼。有幾種方法我建議去繪製到RelativeLayout:

第一個將創建一個ImageView,將它的圖像設置爲您的drawable,然後將其添加到佈局。根據您是否希望在運行時動態添加圖像,實際上可以在xml圖形設計器中執行此操作。這可能是最好的方法,因爲它可以控制圖像的大小,以及如何縮放/裁剪。

如果您想爲佈局設置背景,我相信您可以直接將RelativeLayout的Background屬性設置爲drawable--儘管如此,這並不能對圖像的縮放進行儘可能多的控制。

最後,爲了完全控制如何繪製RelativeLayout,可以在任何視圖中重寫OnDraw方法。只要需要刷新視圖,android系統就會調用此方法。如果你最終使用這個,創建一個自定義視圖類,然後放置在 RelativeLayout可能會更好。

2
canvas = (RelativeLayout) findViewById(R.id.canvasLayout);     
imageCanvas = new Canvas(); 

mainImage = BitmapFactory.decodeResource(getResources(), R.drawable.image); 

imageCanvas.drawBitmap(mainImage, 50, 50, null); 



canvas.addView(imageCanvas);