1
我正在構建一個android應用程序,並且我陷入了一件簡單的事情:我如何繪製(或「添加」)Canvas對象到另一個Canvas對象,如「合併」它們?如何在畫布上繪製畫布
如果這是不可能的,那麼最好的解決方案是什麼?
謝謝!
我正在構建一個android應用程序,並且我陷入了一件簡單的事情:我如何繪製(或「添加」)Canvas對象到另一個Canvas對象,如「合併」它們?如何在畫布上繪製畫布
如果這是不可能的,那麼最好的解決方案是什麼?
謝謝!
這完全取決於您的實施。
如果每個Canvas直接從每個幀的數組(形狀等)繪製對象,則可以簡單地將一個數組附加到另一個數組。這樣,您的畫布不需要大幅改動,只需要將一個陣列添加到另一個陣列中(可能需要一個ArrayList
)。
如果以上情況並非如此,您可能需要做出一些更大的改變。當我遇到類似的問題時,我創建了一個名爲commitChanges()
的新方法,它爲現有Canvas添加了一系列更改(在頂部添加線等)。
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGBA_8888);
。Canvas workingDrawing = new Canvas(bmp);
。canvas.drawBitmap(yourDrawnBitmap, 0.0f, 0.0f, null);
。我想你會面臨的困難是將數據從一個畫布轉移到另一個。但是,無論您的實施如何,上述方法之一應該對您有效。
我爲機器人做了一種「模擬器」,用於競賽,但是有很多「零件」相對於其他人移動,所以我必須手動計算每個相關部分。我的想法是創建畫布,並與現有畫面合併,以便定位和旋轉不成問題。例如:身體有一個頭,腿,腳...當我渲染「身體」時,它會調用renderHead,並獲得頭部的畫布,然後將放置在正確的位置和旋轉。如果Head有眼睛,那麼在drawHead中,我會調用drawEyes,然後加入drawHead眼睛。 –
在這種情況下你可能會做的是讓屏幕Canvas對象具有各自的Bitmap對象。在每個Canvas中,您可以繪製儘可能多的機器人部件(比如,一隻手和一隻前臂)。然後,您可以將該Canvas的位圖(以及所有其他)渲染到「主」Canvas上([link](http://stackoverflow.com/questions/4160149/how-to-draw-on-bitmap-in-安卓))。這在系統上可能相當高,所以如你所說,你更好的選擇是相對計算每個部分(如同一隻手移動,它也移動手臂)。這樣,你只需要一個Canvas。 – Eric
謝謝!我會繼續做大計算......:D –