2015-11-24 19 views
0

因此,我正在構建一個AngularJs圖表,該圖表利用Angular Library在Canvas標記上創建圖表。但是,當我拖放一個新的數據集到畫布上重繪時,它會繼續保存舊數據。我試圖完成的是如果(有新數據){清除畫布}。我知道我必須使用:當顯示新圖表時清除HTML畫布

canvasReset.clearRect(0, 0, canvas.width, canvas.height); 

的地方,但我所真正需要的是一個事件處理程序用來幫助我確定什麼是在畫布上,如果是清除它。但是,我不在尋找鼠標懸停鼠標點擊等。但是通常只是看看畫布是否被利用。

回答

0

簡短的回答,你不能。但是,你能趕上mouseevnets,或者你可以用帆布CTX繪圖功能,如

var fill = ctx.fill; 
ctx.fill = function(){ 
    fill.apply(this, arguments); 
    setDirty(); 
}; 
+0

爲什麼不能是這樣的: – user2402107

+0

帆布=的document.getElementById(「畫布」); 的document.getElementById( 「鹼基」)。的addEventListener( '鼠標懸停',函數(){ 如果(canvas.toDataURL()==的document.getElementById( '空白')。toDataURL()) canvasReset.clearRect(0, 0,canvas.width,canvas.height); }); – user2402107

+0

,因爲您的解決方案對性能而言非常昂貴。對於像100x100這樣的小畫布,它可以工作,但是1000x1000可能會有性能問題。 toDataUrl()將位圖轉換爲base64字符串,並且我通過比較每個像素來測試您的解決方案,結果是38ms用於解決方案,44用於像素比較。所以你的解決方案很慢。 – VahagnNikoghosian