簡體   English   中英

GetValueAtPosition 與 WPF 工具包圖表的使用

[英]Use of GetValueAtPosition with WPF ToolKit Chart

我正在嘗試在圖表上獲取鼠標的 X 坐標 position。 查看此站點上的其他一些代碼,我有

    private void Chart_MouseMove(object sender, MouseEventArgs e)
    {
       var chart = (Chart)sender;
        var xAxisRange = (IRangeAxis)chart.Axes[0];
        var mousePositionInPixels = e.GetPosition(chart);
        double mouseXPositionInChartUnits = (double)xAxisRange.GetValueAtPosition(new UnitValue(mousePositionInPixels.X, Unit.Pixels));
        TextBoxR0.Text = mouseXPositionInChartUnits.ToString(); //temp display textBox for debugging
        RaisePropertyChanged();
    }

問題是這些值向左移動了一個常數。 原點的 X 值為 0,但 GetValueAtPosition 正在返回,例如 15,並且所有返回的 x 值都比應有的值大 15。 如果我水平擴展圖表,偏移量會發生變化,變得更小。 如果我水平收縮圖表,偏移量會變大。 我已經進行了廣泛的搜索以尋找答案,並尋找了一些圖表成員可能會給我一個左邊距偏移,但沒有成功。

我知道這個答案很晚,但我遇到了同樣的問題。 我的解決方案是讓鼠標 position 相對於系列而不是圖表。 它並不完美(在 1366 x 720 的分辨率下相差一個或 2 個像素),但當四舍五入到 2 個位置時,它對我來說已經足夠了。

在我的 xaml 中,我給這個系列起了一個名字(“系列”,雖然不是原創)。 我還有一個綁定到字符串Pos的 TextBlock,所以我可以看到 cursor 的 position。 我已將系列的ItemsSource綁定到List<KeyValuePair<Double, Double>> Points最后,不要忘記 y 軸相對於屏幕坐標翻轉(y 軸隨着您向上移動而增加,但屏幕坐標增加當你向下移動時),這就是為什么那里有一個1.0 – yAxisRange

Xaml:

<chartingToolkit:Chart Name="columnChart" MouseMove="Chart_MouseMove">
    <chartingToolkit:LineSeries Name="Series" ItemsSource="{Binding Points}" DependentValuePath="Value" IndependentValuePath="Key" />
</chartingToolkit:Chart>

代碼:

private void Chart_MouseMove(object sender, MouseEventArgs e)
{
    var chart = (Chart)sender;
    var mousePositionInPixels = e.GetPosition(Series);

    var xAxisRange = (IRangeAxis)chart.ActualAxes[0];
    double mouseXPositionInChartUnits = (double)xAxisRange.GetValueAtPosition(new UnitValue(mousePositionInPixels.X, Unit.Pixels));

    var yAxisRange = (IRangeAxis)chart.ActualAxes[1];
    double mouseYPositionInChartUnits = 1.0 - (double)yAxisRange.GetValueAtPosition(new UnitValue(mousePositionInPixels.Y, Unit.Pixels));

    Pos = $"({Math.Round(mouseXPositionInChartUnits, 2)}, {Math.Round(mouseYPositionInChartUnits, 2)})";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM