本人在paintbox中绘制了一条曲线,想实现如下效果:当鼠标在paintbox中时,鼠标形状要变成十字线(其中横线的长度为paintbox.width,竖线的长度为paintBox.Heitht,)当移动鼠标时,十字中心线只能沿着曲线移动,请问诸位高手是否能实现以上效果呢,该如何实现呢?还望不吝赐教!谢谢!

解决方案 »

  1.   

    给你写个演示代码, 请自行完善一下:
    var
      OldX, OldY : integer;procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      with Self.PaintBox1.Canvas do begin
        MoveTo(OldX,0);
        LineTo(OldX,PaintBox1.Height);
        MoveTo(0,OldY);
        LineTo(PaintBox1.Width,OldY);
        OldX := X;
        OldY := Y;
        MoveTo(X,0);
        LineTo(X,PaintBox1.Height);
        MoveTo(0,Y);
        LineTo(PaintBox1.Width,Y);
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Self.PaintBox1.Canvas.Pen.Mode := pmNot;
      Self.PaintBox1.Canvas.Brush.Style := bsClear;
    end;
      

  2.   

    D7.0中的DEMO下的CHART中有这样的例子上面给的是主要代码,关键的自己参考完善一下就应该满足你的要求了
      

  3.   

    其实我的问题的关键是:鼠标跟随曲线移动,感觉也不难实现,设想如下:根据说采集的数据点进行数据的插值与拟合,比方说我们就做最简单的线性插值,相邻的两个点即一条直线,当鼠标移动时判断其X值在哪两个数据点之间,根据两点直线方程得出与X值相对应的Y值,将鼠标移动到这一点不就OK了?,欢迎诸位批评指教!
      

  4.   

    VCLSkin
    盒子里有下载
    http://www.2ccc.com/article.asp?articleid=1472