2012-11-15 88 views
1

是否可以只繪製部分路徑?假設我的路徑是從x = 0到x = 2000,整個路徑是在開始時計算的,畫布放置在Horizo​​ntalScrollView上。當滾動x = 500時,我只想從該路徑的500到1000中繪製;當x = 0時繪製0到1000,當x = 1500時,繪製1000到1500,當x = 2000時繪製1000到2000.Android帆布:僅繪製預先計算路徑的一部分

路徑是貝塞爾曲線,所以如果需要一直進行計算,這是破壞性能。

謝謝。

回答

1

通過繪製整條線獲得解決方案,然後計算Rect在其上繪製,以隱藏可見部分上的特定部分。

enter image description here

這是證明我是如何做到這一點,我畫的完整路徑,並把它夾,我畫在它上面屏幕的右側位置的矩形,所以它看起來像路徑是裁剪。

+0

爲此,您可能使用了canvas.drawBitmap(位圖,src,dst,paint),對吧?你在哪裏插入你的Path對象?我正面臨着類似的問題。您能否請張貼一些代碼部分? –

+0

我用圖片編輯了我的答案。 – Niko

+0

明白了,謝謝! –

0

我可能會爲你解答。

圖片類用於存儲不更改的圖片,然後將其寫入畫布。

例如,您可以有4個不同的Picture對象,每個對象都帶有Bezier曲線的一部分,然後在需要時寫入它們。

有些代碼可能是這個樣子:

Picture b1 = new Picture(); 
Canvas c1 = b1.beginRecording(500, height); 
// draw 
b1.endRecording(); 
Picture b2 = new Picture(); 
Canvas c2 = b2.beginRecording(500, height); 
c2.translate(-500, 0); 
// draw 
b2.endRecording(); 
Picture b3 = new Picture(); 
Canvas c3 = b3.beginRecording(500, height); 
c3.translate(-1000, 0); 
// draw 
b3.endRecording(); 
Picture b4; = new Picture(); 
Canvas c4 = b4.beginRecording(500, height); 
c4.translate(-1500, 0); 
// draw 
b4.endRecording(); 

(if x < 500) { 
    // draw c1 
} 
... 

有可能是一個辦法只能繪製一次,而不是4次,但我只是發表我所知道的作品。如果您可以找到劃分畫布的方法,那麼您只需繪製一次。

+0

這意味着如果我的X尺度是2000,我需要2000張照片,所以似乎並不符合我的目的。 – Niko