2017-10-18 104 views
0

我有一個ChartJS圓環圖,我想點擊一個細分,並在圖表中心顯示細分信息。我有這個工作,但是無論何時鼠標離開圖表段信息消失,我希望它留下,直到另一個圖表段被點擊。在鼠標離開圖表時畫到畫布點擊清除文字

我已經把這個基本的例子在JSFIDDLE

canvas.onclick = function(evt) { 
    var activePoints = donut.getElementsAtEvent(evt); 
    if(activePoints[0]) { 
     var chartData = activePoints[0]['_chart'].config.data; 
     var idx = activePoints[0]['_index']; 
     var label = chartData.labels[idx].toUpperCase(); 

     ctx.font = "bold 18px Verdana, Arial, sans-serif"; 
     var textWidth = ctx.measureText(label).width; 

     ctx.fillStyle = "#000"; 
     ctx.fillText(label, (250/2) - (textWidth/2), (250/2)); 
    } 
}; 

我如何能保持在圖表的中央的文字?

回答

1

不要直接繪製到畫布上(因爲它由Chart.js管理),請改爲使用plugin api。您可以使用提供的鉤子之一 - 例如afterDraw在繪製圖表後畫出您的東西。

工作的jsfiddle:
https://jsfiddle.net/fa7s5q30/12/

+0

你可以得到的工作的jsfiddle?我試過了,沒有什麼不同(https://jsfiddle.net/fa7s5q30/7/)。將所有代碼移動到'afterDraw'後給出https://jsfiddle.net/fa7s5q30/8/。 – anothershrubery

+0

當然,我已經更新了我的答案。每次圖表重新繪製(這也是鼠標移動)時調用'afterDraw',因此您需要將選定的標籤存儲在某處,否則它將被清除。我選擇將它附加到圖表實例。 –

+0

這在Chrome中非常適用,但不會在IE11中顯示圖表。不要在調試器中標記任何問題。任何方式呢? – anothershrubery