作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在绘制两条曲线后,我在 zedgraph 控件上有两条曲线...
PointPairList thresholdList = new PointPairList();
PointPairList powerList = new PointPairList();
private void plotPower()
{
// Create an object to access ZedGraph Pane
GraphPane pane = zedGraphControl1.GraphPane;
LineItem thresholdLine = new LineItem("thresholdLine");
LineItem powerLine = new LineItem("powerLine");
// Set the Threshold Limit
double thresoldLimit = Convert.ToDouble(numAnalysisThreshold2.Value);
// Points
double[] x = new double[]{0, pane.XAxis.Scale.Max};
double[] y = new double[]{thresoldLimit, thresoldLimit};
// Set the threshold line curve list
thresholdList.Add(x, y);
// Set the Power Line curve list
powerdList.Add(XData, YData);
// Add Curves
thresholdLine = pane.AddCurve("", thresholdList, Color.Red, SymbolType.None);
powerLine = pane.AddCurve("", powerList, Color.Red, SymbolType.None);
// Refresh Chart
this.Invalidate();
zedGraphControl1.Refresh();
}
从上面的代码中,我设法将两条曲线绘制为电源线曲线超过阈值线曲线。
现在我的问题是,如果我想把任何一条曲线放在前面....有没有可用的方法(例如:bringittoFront()....)......?
非常感谢您的宝贵时间....:)
最佳答案
GraphPane包含 CurveList属性(property),和CurveList类是 List<CurveItem>
的子类.如果设置 CurveItem.Tag您绘制的每条曲线的属性,我相信您应该能够使用 CurveList.Sort(IComparer<CurveItem>)
对曲线项进行排序方法和使用 Tag
表示排序顺序。
6 月 19 日更新
简单的例子:两条线,蓝色line2
与 line2.Tag = 2
和红色line1
与 line1.Tag = 1
.在初始化line2
首先添加到图形 Pane ,因此它将显示在顶部。
void GraphInit()
{
var line2 = _graph.GraphPane.AddCurve("Second",
new[] { 0.1, 0.5, 0.9 }, new[] { 0.1, 0.5, 0.1 }, Color.Blue);
line2.Tag = 2;
var line1 = _graph.GraphPane.AddCurve("First",
new[] { 0.1, 0.5, 0.9 }, new[] { 0.1, 0.5, 0.9 }, Color.Red);
line1.Tag = 1;
_graph.Refresh();
}
要排序,首先实现一个实现了IComparer<CurveItem>
的类, 并根据 CurveItem
的数值按升序对曲线项进行排序Tag
属性:
class CurveItemTagComparer : IComparer<CurveItem>
{
public int Compare(CurveItem x, CurveItem y)
{
return ((int)x.Tag).CompareTo((int)y.Tag);
}
}
要执行重新排序和更新图形,请为排序 按钮实现以下事件处理程序:
void SortButtonClick(object sender, EventArgs e)
{
_graph.GraphPane.CurveList.Sort(new CurveItemTagComparer());
_graph.Refresh();
}
现在,当单击排序 按钮时,将对曲线进行排序,使得标记值最低的曲线即line1
, 而是绘制在顶部。此外,请注意图例中的曲线顺序也随之改变。
关于c# - 如何在 ZedGraph 中将特定曲线置于最前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11103596/
我是一名优秀的程序员,十分优秀!