ZedGraph - 如何在不使用鼠标的情况下在 x,y 点显示光标?

发布于 2024-10-25 09:52:30 字数 537 浏览 1 评论 0原文

我正在 Zedgraph 中绘制一条曲线,如下所示:

GraphPane myPane = zgc.GraphPane;
PointPairList list1 = new PointPairList();
for(int i =0; i<10; i++)
    list1.Add(i,i);            
LineItem myCurve = myPane.AddCurve("Title",
          list1, Color.Red, SymbolType.None);        

zgc.AxisChange();
zgc.Refresh();

How can I display acursor (or any other graph object) at a certain x, y point on myCurve< /代码>像这样:

SetCursor(myCurve, list1[3]);

I am drawing a curve in Zedgraph like this:

GraphPane myPane = zgc.GraphPane;
PointPairList list1 = new PointPairList();
for(int i =0; i<10; i++)
    list1.Add(i,i);            
LineItem myCurve = myPane.AddCurve("Title",
          list1, Color.Red, SymbolType.None);        

zgc.AxisChange();
zgc.Refresh();

How can I display a cursor (or any other graphic object) at a certain x, y point on myCurve like this:

SetCursor(myCurve, list1[3]);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无力看清 2024-11-01 09:52:30

了解曲线的特定点,您可以使用 GraphPane.GeneralTransform(...)< /code>方法

因此,使用以下代码:

var myPoint = myCurve[3];
var screenPoint = myPane.GeneralTransform(myPoint.X, myPoint.Y, CoordType.AxisXYScale);

将为您提供转换为屏幕上特定点(以像素为单位)的坐标。

然后你需要找到一些更高级别的方法(可能在 Windows 窗体中......)将光标移动到该点。

Knowing specific point of your curve you can use GraphPane.GeneralTransform(...) method

So using following code:

var myPoint = myCurve[3];
var screenPoint = myPane.GeneralTransform(myPoint.X, myPoint.Y, CoordType.AxisXYScale);

would give you coordinates transformed to specific point on screen (in pixels).

Then you need to find some higher-level method (probably in windows forms...) that would move your cursor to that point.

莫言歌 2024-11-01 09:52:30

这是一个简单且更有效的示例,用于创建十字光标,十字光标是图形对象集合的一部分,因此您可以在其上进行缩放、打印操作。它在“GraphObjList”集合中添加两个“LineObj”。
代码: 将光标放在第一条曲线的第 10 个点

    Dim myPane As GraphPane = zg1.GraphPane    
    Dim myPoint As PointPair = myPane.CurveList.Item(0).Points(10)
    Dim CurseurV1 As New LineObj(Color.Blue, myPoint.X,myPane.YAxis.Scale.Min, myPoint.X, myPane.YAxis.Scale.Max)

    CurseurV1.Line.Width = 0.5
    myPane.GraphObjList.Add(CurseurV1)

    Dim CurseurH1 As New LineObj(Color.Blue, myPane.XAxis.Scale.Min,myPoint.Y, myPane.XAxis.Scale.Max, myPoint.Y)
    CurseurH1.Line.Width = 1
    myPane.GraphObjList.Add(CurseurH1)

完成:使用 ZedGraph.dll 版本 5.1.2.878,您将在图形上看到一个蓝色的“十字”光标。

Here is a simple and more efficient example to create a cross cursor wich is part of the objects collection of the graph so you can operate zooming, printing on it. It add two "LineObj" in the "GraphObjList" collection.
The code : Put a cursor at the 10th point of the first curve

    Dim myPane As GraphPane = zg1.GraphPane    
    Dim myPoint As PointPair = myPane.CurveList.Item(0).Points(10)
    Dim CurseurV1 As New LineObj(Color.Blue, myPoint.X,myPane.YAxis.Scale.Min, myPoint.X, myPane.YAxis.Scale.Max)

    CurseurV1.Line.Width = 0.5
    myPane.GraphObjList.Add(CurseurV1)

    Dim CurseurH1 As New LineObj(Color.Blue, myPane.XAxis.Scale.Min,myPoint.Y, myPane.XAxis.Scale.Max, myPoint.Y)
    CurseurH1.Line.Width = 1
    myPane.GraphObjList.Add(CurseurH1)

It's done : you'd have a blue "cross" cursor on your graphe using ZedGraph.dll Version 5.1.2.878.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文