我正在構建一個應用程序,繪製使用QtCharts庫的測量數據。一些重要的事情,應該提及的是:如何強制QChartView僅繪製其本身的一部分
我正在處理時間序列。
測量數據離線獲取,這意味着它已經獲得。我的程序只是從文件中讀取並顯示它。
我正在使用for循環,它將數據點視爲固定大小(比如10000)的塊,並將它們添加到分散系列中。通過這種方式,數據被「重播」,用戶可以在許多中間時間點看到測量數據的進展,而不是在繪製完所有數據點之後。
我正在處理大量的數據點,數以百萬計。
在創建一個新的QScatterSeries循環的每次迭代,數據點被追加,散射系列被添加到圖表,然後圖表視圖重新繪製。一開始它的速度非常快,但隨着時間的推移,塗漆點的數量增加,塗裝過程變得越來越慢。 我知道一個事實,我可以重新實現圖表視圖類的paintEvent來讓它只重繪本身的一部分。我想我可以通過只更新具有新數據點的部分來加快速度。我將只計算添加新數據點的區域的座標,並使用paintEvent。但我該怎麼做?我嘗試使用QPainter的setClipRect()方法,但不能這樣做。提前致謝。
首先,感謝您的回覆。可能有些事情我不能說得很清楚。首先,由於所有數據點在開始時都可用,因此我將首先爲這兩個座標找到這些點的最小值和最大值,然後將軸的範圍設置爲這些值。這樣,就不需要重新調整軸的尺寸。另外,不需要重新繪製已經在圖表上的點,因爲它們的位置不會改變。新的數據點將被放置在以前空白的區域。所以我只想給這個地區的位置 –
這是可行的,但仍需要對Qt代碼進行修改。 –