本文整理汇总了C#中LineSeries.Transform方法的典型用法代码示例。如果您正苦于以下问题:C# LineSeries.Transform方法的具体用法?C# LineSeries.Transform怎么用?C# LineSeries.Transform使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LineSeries
的用法示例。
在下文中一共展示了LineSeries.Transform方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MouseDownEvent
public static PlotModel MouseDownEvent()
{
var model = new PlotModel { Title = "MouseDown", Subtitle = "Left click to edit or add points.", LegendSymbolLength = 40 };
// Add a line series
var s1 = new LineSeries
{
Title = "LineSeries1",
Color = OxyColors.SkyBlue,
MarkerType = MarkerType.Circle,
MarkerSize = 6,
MarkerStroke = OxyColors.White,
MarkerFill = OxyColors.SkyBlue,
MarkerStrokeThickness = 1.5
};
s1.Points.Add(new DataPoint(0, 10));
s1.Points.Add(new DataPoint(10, 40));
s1.Points.Add(new DataPoint(40, 20));
s1.Points.Add(new DataPoint(60, 30));
model.Series.Add(s1);
int indexOfPointToMove = -1;
// Subscribe to the mouse down event on the line series
s1.MouseDown += (s, e) =>
{
// only handle the left mouse button (right button can still be used to pan)
if (e.ChangedButton == OxyMouseButton.Left)
{
int indexOfNearestPoint = (int)Math.Round(e.HitTestResult.Index);
var nearestPoint = s1.Transform(s1.Points[indexOfNearestPoint]);
// Check if we are near a point
if ((nearestPoint - e.Position).Length < 10)
{
// Start editing this point
indexOfPointToMove = indexOfNearestPoint;
}
else
{
// otherwise create a point on the current line segment
int i = (int)e.HitTestResult.Index + 1;
s1.Points.Insert(i, s1.InverseTransform(e.Position));
indexOfPointToMove = i;
}
// Change the linestyle while editing
s1.LineStyle = LineStyle.DashDot;
// Remember to refresh/invalidate of the plot
model.InvalidatePlot(false);
// Set the event arguments to handled - no other handlers will be called.
e.Handled = true;
}
};
s1.MouseMove += (s, e) =>
{
if (indexOfPointToMove >= 0)
{
// Move the point being edited.
s1.Points[indexOfPointToMove] = s1.InverseTransform(e.Position);
model.InvalidatePlot(false);
e.Handled = true;
}
};
s1.MouseUp += (s, e) =>
{
// Stop editing
indexOfPointToMove = -1;
s1.LineStyle = LineStyle.Solid;
model.InvalidatePlot(false);
e.Handled = true;
};
model.MouseDown += (s, e) =>
{
if (e.ChangedButton == OxyMouseButton.Left)
{
// Add a point to the line series.
s1.Points.Add(s1.InverseTransform(e.Position));
indexOfPointToMove = s1.Points.Count - 1;
model.InvalidatePlot(false);
e.Handled = true;
}
};
return model;
}