當數據點值相對於圖表中的最大值較小時,點擊圖表列並不容易,因爲可點擊區域非常小。所以,我想找到一種方法讓整列可點擊,包括顯示數據點上方和下方的空白區域。如何使整個StackedColumn可點擊,而不僅僅是數據點
我一直在尋找這樣做,帶狀線與列對齊,因爲帶狀線被HitTest檢測到,但我很難理解是否/如何進行對齊。
這是一個可行的想法還是有一些其他方式來實現我的目標?
屏幕截圖顯示了問題。 2025年的數據用BackHatching高亮顯示。
當數據點值相對於圖表中的最大值較小時,點擊圖表列並不容易,因爲可點擊區域非常小。所以,我想找到一種方法讓整列可點擊,包括顯示數據點上方和下方的空白區域。如何使整個StackedColumn可點擊,而不僅僅是數據點
我一直在尋找這樣做,帶狀線與列對齊,因爲帶狀線被HitTest檢測到,但我很難理解是否/如何進行對齊。
這是一個可行的想法還是有一些其他方式來實現我的目標?
屏幕截圖顯示了問題。 2025年的數據用BackHatching高亮顯示。
這應有助於:
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
是耐人尋味的,順便說一句,但我想不出找到合適的寬度和位置的方法。
另一種方法是掃描的全部點中的所有系列,以找到那些我們最接近,然後用他們的價值觀,但是這聽起來甚至更貴的..
輝煌。謝謝。對於其他讀者來說,你可以通過舍入hittr.Axis.PixelPositionToValue(e.X)得到被單擊的X軸值(在我的情況下爲Year)。請注意,您可能需要測試自第1列前面的單擊之後或之後最後一個X軸值超出繪製範圍的X軸值,它們將返回未繪製的X軸值。 –
我剛剛發現,由於某種原因,因爲hittr.Axis值爲空,所以當出現負值時,我的建議是不能獲取X軸值。所以,請用上面四捨五入的chart1.ChartAreas [0] .AxisX.PixelPositionToValue(e.X)代替我上面的語句。 –
你能與你的技術,這個標籤使用 – FloatingKiwi
是的。我應該做到這一點。它是在Win 8.1筆記本電腦上用Visual Studio Community 2015開發的C#WinForms應用程序。 –