C# TeeChart:扩展线条/快速线条的“可点击”宽度

C# TeeChart:扩展线条/快速线条的“可点击”宽度,c#,teechart,C#,Teechart,我有一个WinForms应用程序,其中在TeeChart组件中绘制了许多线条。要求可以通过右键单击删除一行 一切正常,clickseries事件被捕获,等等,但是用户发现右键单击很难击中线路。问题是,是否可以增加Line/FastLine对象可以点击的区域?也就是说,使线条更宽,而不在屏幕上绘制任何更宽的线条 提前Tnx是的,这是可能的。实现这一目标的关键是。要实现您的要求,您可以将其与的工具相结合,如本例所示: public Form1() { InitializeComponent();

我有一个WinForms应用程序,其中在TeeChart组件中绘制了许多线条。要求可以通过右键单击删除一行

一切正常,clickseries事件被捕获,等等,但是用户发现右键单击很难击中线路。问题是,是否可以增加Line/FastLine对象可以点击的区域?也就是说,使线条更宽,而不在屏幕上绘制任何更宽的线条


提前Tnx是的,这是可能的。实现这一目标的关键是。要实现您的要求,您可以将其与的工具相结合,如本例所示:

public Form1()
{
  InitializeComponent();
  InitializeChart();
}

private void InitializeChart()
{
  tChart1.Aspect.View3D = false;

  tChart1.Series.Add(new Steema.TeeChart.Styles.Line()).FillSampleValues();
  tChart1.MouseMove += TChart1_MouseMove;
}

private void TChart1_MouseMove(object sender, MouseEventArgs e)
{
  var nearestPoint = new Steema.TeeChart.Tools.NearestPoint(tChart1[0]);
  nearestPoint.Active = false;
  var p = new Point(e.X, e.Y);
  var index = nearestPoint.GetNearestPoint(p);

  if (index != -1)
  {
    const int tolerance = 10;
    var px = tChart1[0].CalcXPos(index);
    var py = tChart1[0].CalcYPos(index);

    var index2 = (index == tChart1[0].Count - 1) ? index - 1 : index + 1;
    var qx = tChart1[0].CalcXPos(index2);
    var qy = tChart1[0].CalcYPos(index2);

    if (Steema.TeeChart.Drawing.Graphics3D.PointInLineTolerance(p, px, py, qx, qy, tolerance))
    {
      tChart1.Header.Text = "point " + index.ToString() + " clicked";
    }
    else
    {
      tChart1.Header.Text = "No point";
    } 
  }
另一种方法是使用与原始序列具有相同数据的不可见伪序列