2016-08-17 87 views
1

當數據點值相對於圖表中的最大值較小時,點擊圖表列並不容易,因爲可點擊區域非常小。所以,我想找到一種方法讓整列可點擊,包括顯示數據點上方和下方的空白區域。如何使整個StackedColumn可點擊,而不僅僅是數據點

我一直在尋找這樣做,帶狀線與列對齊,因爲帶狀線被HitTest檢測到,但我很難理解是否/如何進行對齊。

這是一個可行的想法還是有一些其他方式來實現我的目標?

屏幕截圖顯示了問題。 2025年的數據用BackHatching高亮顯示。

Screenshot shows the problem. The data in 2025 is highlighted with BackHatching.

+0

你能與你的技術,這個標籤使用 – FloatingKiwi

+0

是的。我應該做到這一點。它是在Win 8.1筆記本電腦上用Visual Studio Community 2015開發的C#WinForms應用程序。 –

回答

1

這應有助於:

private void chart1_MouseClick(object sender, MouseEventArgs e) 
{ 
    Axis ay = chart1.ChartAreas[0].AxisY; 
    int zeroPix = (int)ay.ValueToPixelPosition(0); 
    HitTestResult hittr = chart1.HitTest(e.X, zeroPix); 

    // now you can do your stuff..  
    Text = hittr.ChartElementType.ToString(); 
} 

訣竅是測試不實際的垂直鼠標的位置,但其中zero數據值位於像素。由於(正確填充)StackedColumn圖表在這個位置應該有一個DataPoint所有列,我們可以在那裏做HitTest

相同的技巧也應該柱形圖工作:這裏太每列將上升或下降到它的y值,但始終爲0

的想法開始使用StripLines是耐人尋味的,順便說一句,但我想不出找到合適的寬度和位置的方法。

另一種方法是掃描的全部點中的所有系列,以找到那些我們最接近,然後用他們的價值觀,但是這聽起來甚至更貴的..

+1

輝煌。謝謝。對於其他讀者來說,你可以通過舍入hittr.Axis.PixelPositionToValue(e.X)得到被單擊的X軸值(在我的情況下爲Year)。請注意,您可能需要測試自第1列前面的單擊之後或之後最後一個X軸值超出繪製範圍的X軸值,它們將返回未繪製的X軸值。 –

+0

我剛剛發現,由於某種原因,因爲hittr.Axis值爲空,所以當出現負值時,我的建議是不能獲取X軸值。所以,請用上面四捨五入的chart1.ChartAreas [0] .AxisX.PixelPositionToValue(e.X)代替我上面的語句。 –

相關問題