是否可以只繪製部分路徑?假設我的路徑是從x = 0到x = 2000,整個路徑是在開始時計算的,畫布放置在HorizontalScrollView上。當滾動x = 500時,我只想從該路徑的500到1000中繪製;當x = 0時繪製0到1000,當x = 1500時,繪製1000到1500,當x = 2000時繪製1000到2000.Android帆布:僅繪製預先計算路徑的一部分
路徑是貝塞爾曲線,所以如果需要一直進行計算,這是破壞性能。
謝謝。
是否可以只繪製部分路徑?假設我的路徑是從x = 0到x = 2000,整個路徑是在開始時計算的,畫布放置在HorizontalScrollView上。當滾動x = 500時,我只想從該路徑的500到1000中繪製;當x = 0時繪製0到1000,當x = 1500時,繪製1000到1500,當x = 2000時繪製1000到2000.Android帆布:僅繪製預先計算路徑的一部分
路徑是貝塞爾曲線,所以如果需要一直進行計算,這是破壞性能。
謝謝。
通過繪製整條線獲得解決方案,然後計算Rect在其上繪製,以隱藏可見部分上的特定部分。
這是證明我是如何做到這一點,我畫的完整路徑,並把它夾,我畫在它上面屏幕的右側位置的矩形,所以它看起來像路徑是裁剪。
我可能會爲你解答。
圖片類用於存儲不更改的圖片,然後將其寫入畫布。
例如,您可以有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次,但我只是發表我所知道的作品。如果您可以找到劃分畫布的方法,那麼您只需繪製一次。
這意味着如果我的X尺度是2000,我需要2000張照片,所以似乎並不符合我的目的。 – Niko
爲此,您可能使用了canvas.drawBitmap(位圖,src,dst,paint),對吧?你在哪裏插入你的Path對象?我正面臨着類似的問題。您能否請張貼一些代碼部分? –
我用圖片編輯了我的答案。 – Niko
明白了,謝謝! –