关于曲线坐标的问题?

iceprince007 2005-01-26 11:29:42
我用Tchart控件做了一个曲线,如何能在鼠标指向该条曲线某一点时,显示该点的坐标,请各位大侠帮帮忙!!!
...全文
143 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceprince007 2005-01-30
  • 打赏
  • 举报
回复
TO djmdjmdjm(狄惊梦):
这个方法是能够显示出做坐标,可我要做的是当鼠标指向曲线时,显示坐标,鼠标没有指向曲线时,就什么也不显示.我是一个刚学delphi的菜鸟,请大侠帮帮忙,分还可以再加,谢谢.
Kshape_zh 2005-01-29
  • 打赏
  • 举报
回复
是否可以这样
用mousemove得到坐标值
然后用p := ScreenToClient(p);转换成客户区的坐标
在减去DBChart的X,Y到两边的距离
djmdjmdjm 2005-01-27
  • 打赏
  • 举报
回复
procedure TDBQX.DBChart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
{ This procedure draws the crosshair lines }
Procedure DrawCross(AX,AY:Integer);
begin
With DBChart1,Canvas do
begin
Pen.Color:=clYellow;
Pen.Style:=psSolid;
Pen.Mode:=pmXor;
Pen.Width:=1;
MoveTo(ax,ChartRect.Top-Height3D);//画十字架
LineTo(ax,ChartRect.Bottom-Height3D);
MoveTo(ChartRect.Left+Width3D,ay);
LineTo(ChartRect.Right+Width3D,ay);
end;
end;

Var tmpX,tmpY:Double;
lab,str:string;
i:integer;
ss:TFastLineSeries;
begin
DBChart1.Cursor:=crCross;
DBChart1.OriginalCursor:=DBChart1.Cursor;
DBChart1.Repaint;
if (OldX<>-1) then
begin
DrawCross(OldX,OldY); // 画旧点
OldX:=-1;
end;

if PtInRect( DBChart1.ChartRect, Point(X-DBChart1.Width3D,Y+DBChart1.Height3D) ) then
begin
DrawCross(x,y); // 画新点并保存
OldX:=x;
OldY:=y;

ss.GetCursorValues(tmpX,tmpY); //写文字
lab:=ss.GetVertAxis.LabelValue(tmpY);
QuDatetime(tmpx,str);
dbchart1.Canvas.TextOut(x,y,lab+' '+str);
end;
end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧