[英]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.