Noodlejay BlaBla

welcome and happy to share


發表留言

Chart繪圖區域控制,ChartArea Position、InnerPlotPosition

如果沒有特別需要排版的要求,很多功能通常都是由預設的Auto,但是Chart的細項太多,常常改動一個就亂套了…

而在Chart的使用中,繪圖區域的大小及位置是由ChartArea中的Position和InnerPlotPosition所控制。

Position(float x ,float y ,float width ,float height)

InnerPlotPosition(float x ,float y ,float width ,float height)

底下為我的理解跟解釋:

我將ChartArea的Boader設定顏色,方便理解。

01# 設定ChartArea的大小,當Position(0,0,80,80),其意義為Chart長寬的各80%,

InnerPlotPosition(0,0,100,100)時,100即實際繪製佔滿了100%長寬的ChartArea。也因此X軸、Y軸標籤超出了ChartArea範圍(即紅藍框),所以不會顯示出來。


02# 將 InnerPlotPosition(0,0,80,50)時,繪製則僅ChartArea Width的50%、Height的80%區域(相對於紅框)


03# 接著設定Position(10, 10, 80, 80) , 左上角當作原點,設定x為距離原點10% w 的距離;設定y為距離原點10%h的距離;


04# 再接著設定 InnerPlotPosition(20,10,100,100),此時以ChartArea(紅框)的左上角為原點,設定x為距離原點20% w 的距離;設定y為距離原點10%h的距離;如下圖,此時X軸、Y軸標籤都顯示出來了。


簡單總結 #

Position為設定ChartArea的大小和位置,參數比例相對於Chart元件尺寸。

InnerPlotPosition為設定繪圖的大小和位置,參數比例相對於ChartArea。

上面的步驟只是輔助理解,一次設定只要兩行就可以得到最後的結果。

有任何疑問歡迎留言討論


發表留言

chart auto scroll ,並保持在最新的資料點

設定自動捲動的方法如下,當資料點數超過一百個就會出現ScrollBar,自動捲動並更新,我用Timer簡單寫了一個Sin波做測試,正常的時候會捲動,隨著資料越來越多,Bar會越來越短。

        chart1.ChartAreas[0].CursorX.AutoScroll = true;

        chart1.ChartAreas[0].AxisX.ScaleView.Size = 100; // 控制顯示的範圍

在不設定的情況下,應該會保持在最右邊,…但天不從人願 (誤 ,總是會有奇怪的情況產生,就是它會停留在左邊,雖然Bar越來越長但不轉動…= =+ 知道原因的麻煩留言告訴我。

最後找到解決的方法如下,再新增資料點數的時候加入ScrollType.Last ,這樣就能夠恢復正常捲動!!!!

            chart1.Series[0].Points.AddY( Y_value);

            chart1.ChartAreas[0].AxisX.ScaleView.Scroll(ScrollType.Last);

在使用Chart的過程中,最痛苦的莫過於不知道控制向到底藏在哪裡…..感謝網路大神。

參考:https://www.csdn.net/p/390856927


發表留言

C# chart 縮放控制選項

簡單記錄一下實作Chart搭配滑鼠來縮放Chart的圖形,及Zoom In / Zoom out,底下是參考的文章。

使用滾輪縮放

https://stackoverflow.com/questions/13584061/how-to-enable-zooming-in-microsoft-chart-control-by-using-mouse-wheel


使用中間?(滾輪)事件

https://stackoverflow.com/questions/1951151/the-event-for-middle-mouse-down-and-move


Cursor Line in Chart ( 隨滑鼠移動繪製輔助線?)

https://stackoverflow.com/questions/13869024/cursor-lines-in-chart


Zoom in to show (放大顯示)

https://stackoverflow.com/questions/29985796/chart-zoom-in-to-show-more-precise-data