簡體   English   中英

Oxyplot-在LineSeries中編輯左鍵單擊標簽

[英]Oxyplot - edit the left-click label in a LineSeries

我正在Oxyplot中繪制一些不同的LineSeries(在C#中,使用Windows窗體),它們的范圍都有很大不同。 為了使每個系列仍然可見,我將所有值縮放到從0到1的范圍。當然,這里的問題是,該系列的實際值不再顯示了,所以我想知道是否有可能更改顯示DataPoint的X和Y值的左鍵單擊事件以解決此問題。 如果可能的話,我希望這樣做,以便當用戶單擊數據點時,顯示的Y值將被縮放回原始值,而圖形仍保持按比例縮小。

例如,我有一個Na +值,范圍從130到150,然后將其縮放到0和1。但是當用戶單擊一個數據點時,我希望它顯示Y = 140而不是0.5。 由於每個LineSeries都有不同的縮放比例,因此這也意味着我必須分別編輯每個系列的標簽。

是的,在當前版本中可能會發生這種情況嗎? 提前致謝!

編輯:我想通了,請參閱下面的答案!

我不確定是否應該回答自己的問題,但最終還是弄清楚了。 因此,無論如何,事實證明我無法訪問所需的任何屬性,因此我只是為數據點創建了自己的類,並為縮放值添加了一個屬性。 事實證明,跟蹤器能夠顯示數據點的其他屬性,但是標准數據點僅具有X和Y。然后,我修改了TrackerFormatString以顯示縮放值,而不是實際值。

        public class MeasurePoint : IDataPointProvider
    {
        public MeasurePoint(double x, double y, double scale)
        {
            X = x; Y = y; Scale = scale;
        }

        public double X { get; set; }
        public double Y { get; set; }
        public double Scale { get; set; }
        public DataPoint GetDataPoint()
        {
            return new DataPoint(X, Y);
        }
    }

那就是我創建的類,這就是我最終處理這些要點的方式。

            var points = new MeasurePoint[Y.Count - 1];
        for (int i = 0; i < Y.Count; i++)
        {
            points[i] = new MeasurePoint(DateTimeAxis.ToDouble(X[i]), Y[i], Y[i]*scale);
        }
        Series.ItemsSource = points;
        Series.TrackerFormatString = "{0}\n{2}\n{Scale}";

縮放比例是在繪制之前我將這些值除以的因子,TrackerFormatString是系列名稱{0},而{2}是X值。

效果很好!

您不能直接更改顯示的數據,但是可以像這樣在oxyplot中監聽mousedown事件:

var model= new PlotModel();
model.MouseDown += Model_MouseDown;

private void Model_MouseDown(object sender, OxyMouseDownEventArgs e)
{
    var controller = sender as PlotController;
    var position = e.HitTestResult;
}

使用position值,您可以計算回實際值並將其顯示在其他位置。

暫無
暫無

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

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