ZedGraph-如何使水平线可拖动?

问题描述 投票:3回答:3

我有一些水平直线,希望用户能够垂直拖动。这怎么可能?我认为,用于线选择的最佳参数将是线附近固定数量的像素。因此,如果鼠标为+/- 2像素,则应更改鼠标光标并使线可拖动。。我看到CurveItem类具有属性IsSelectable和IsSelected。这些会解决这个问题吗?通过阅读课程文档,我无法真正理解它们的用途。


EDIT:

似乎FindNearestPoint

(和FindNearestObject)仅搜索实际点。如何进行选择以沿直线的整个部分工作?我想我需要做一个自己的自定义“查找”例程,该例程遍历我要检查的所有行,并根据鼠标X位置()的每一个计算得出它的假想Y点,我我也为此考虑了斜线,对于水平/垂直线,它会稍微简单一些。至少看来这是curveItem所需要的,但是我认为必须同样地选择LineObj(在中间)?

我实际上不知道LineObj

存在。似乎LineObj无法更改X2 / Y2坐标,因为它们是ReadOnly。那么,是否有可能拖动LineObj的X2 / Y2点?

编辑2:

这似乎与JapaneseCandleStick图上的FindNearestPoint有关;当我在图形窗格中单击时,它会not

返回最近条形的索引,但是我相信它会选择具有最接近Y值的索引,无论它在x轴上有多远。有时是鼠标右侧的条,有时是鼠标左侧的条。这就是它的工作方式吗?

我自己制作了此自定义函数,所以我认为还可以。。仍然很高兴理解为什么FindNearestPoint以此方式运行。

这是mouseDown上的代码:

   ' Find nearest curve point:
   Dim ciNearestCurve As CurveItem
   Dim iNearestCurve As Integer
   Dim b As Boolean = zgc.GraphPane.FindNearestPoint(mousePt, zgc.GraphPane.CurveList, ciNearestCurve, iNearestCurve)
   If b Then
       With ciNearestCurve(iNearestCurve)
           Debug.Print(Date.FromOADate(.X) & " " & .Y & " " & .Z)
       End With

我有一些水平直线,希望用户能够垂直拖动。这怎么可能?我认为,用于行选择的最佳参数是......>

line drag zedgraph
3个回答
1
投票

dragging the points with mouse上观看本教程。

如果使用的是LineObj而不是曲线,请查看FindNearestObject方法。


1
投票

首先回答bretddog:


1
投票

我需要在绘图上拖动线对象。我花了很多时间才知道如何去做。以下代码特定于我的应用程序,虽然还不完整,但是可以正常工作,对于任何需要执行此操作的人,我认为它都是一个很好的起点。我的代码在VB中。它的本质是使用MouseDownEvent来确定光标是否足够接近要拖动的对象。然后在MouseMoveEvent中确定新位置并更新绘图。

© www.soinside.com 2019 - 2024. All rights reserved.