2016-06-07 154 views
0

我可以使用兩個或多個畫布在SurfaceView中繪製嗎?在SurfaceView中繪製多個畫布

例如

Canvas canvas1 = holder.lockCanvas; 
canvas1.drawPath(path1, paint1); 
holder.unlockCanvasAndPost(canvas1); 

Canvas canvas2 = holder.lockCanvas; 
canvas2.drawPath(path2, paint2); 
holder.unlockCanvasAndPost(canvas2); 

此代碼顯示不正確的圖像。

+0

'Canvas'es列表?他們是什麼?它們不會被'SurfaceHolder#lockCanvas()'返回? – pskink

+0

不,我從文件中加載它,但是我可以從畫布上獲取pathes並使用SurfaceHolder.lockCanvas(),但是在這種情況下我不知道該怎麼做。 –

+0

從文件加載?你從文件中加載'Canvas'es?怎麼來的? – pskink

回答

1

Android Canvas只是一種發佈繪圖命令的方式。 SurfaceHolder爲您提供一個只在lock()unlockCanvasAndPost()調用之間有效的畫布。

每次鎖定SurfaceHolder時,您都會看到不同的Canvas。 SurfaceView是雙緩衝或三重緩衝,所以你也可以通過一系列緩衝區旋轉。

請確保您不會將「Canvas」的Android定義與其他上下文中的使用混淆。

+0

現在它是有道理的。我正在畫一條線和每個不同的鎖,我注意到它們只在2次調用後纔開始繪製在一起。我只需要一個策略來總是在這兩者之間繪製。 – SMUsamaShah