2011-07-08 31 views
5

有沒有一種方法可以去除線條? 在我的畫布上,我有一條線條,不透明度爲0.5,寬度爲20像素,比方說。 現在我想把它變長一點,就是說要從舊的那條中劃出另一條線。 當這樣做時,舊線和新線之間的匹配點變得不那麼透明(因爲它們現在由兩條線組成)。 所以我想打破舊線路,然後敲擊新線路。在HTML5上清除線條Canvas

我該怎麼辦?

感謝

回答

4

您如何繪製到畫布由API嚴格定義,但是如何在軟件和/或硬件中完成取決於瀏覽器開發人員。一些使用硬件加速的瀏覽器和其他瀏覽器正在使用atm。 (例如使用軟件渲染器atm)

在計算機圖形學繪圖時,繪製到緩衝區。當你調用lineTo和stroke時,緩衝區被更新,並且底層像素中的所有信息都會丟失(如果使用透明度,則會丟失部分信息),並且無法通過撤消將其取回(除非存在包含負載的實現的舊圖紙,但這對內存來說真的很重)。

所以能夠撤消行程可能節省的CPU/GPU很多時間但對子級重增加內存

+0

基本上,我的意圖是編寫一個好的繪畫程序。 –

4

我想最簡單的方法是簡單地清除(使用clearRect)整個畫布,只是畫出整條生產線再次

10

clearRect()是做到這一點的唯一途徑。解決此問題的一種好方法(如果畫布上繪製了很多元素),則使用絕對定位在HTML中疊加兩個畫布,一個用於「靜態」繪圖,另一個用於您計劃繪製的頂層清除/重繪。這樣可以節省CPU時間,並再次繪製所有畫布。

6

另一種優雅的選項是設置「globalCompositeOperation」到「異」和油漆你再排隊。 ...所以它將被刪除

+0

太棒了,很高興我偶然發現了這個,因爲我將來需要這樣做 – JDS