请教Teechart中如何实现跟随光标移动的label? |
答題得分者是:harpist
|
C.W
一般會員 發表:1 回覆:3 積分:0 註冊:2009-01-16 發送簡訊給我 |
请教Teechart中如何实现跟随光标移动的label?
我的意思是当鼠标进入Tchart时,在BottomAxis 和LeftAxis 分别上显示一个移动的Label. 我现在的的做法是在Tchart上放置一个label,然后把光标对应的坐标值赋予该label.caption 如下: procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var x1,y1:integer;xv,yv:double; begin x1:=chart1.GetCursorPos.X; y1:=chart1.GetCursorpos.y; xv:=chart1.BottomAxis.CalcPosPoint(x1); yv:=chart1.LeftAxis.CalcPosPoint(y1); label16.Caption:='(' format('%7.2f',[xv]) ':' format('%7.2f',[yv]) ' )'; end; 但是我需要的效果是希望如下图所示 |
C.W
一般會員 發表:1 回覆:3 積分:0 註冊:2009-01-16 發送簡訊給我 |
|
harpist
資深會員 發表:3 回覆:251 積分:430 註冊:2002-10-03 發送簡訊給我 |
|
C.W
一般會員 發表:1 回覆:3 積分:0 註冊:2009-01-16 發送簡訊給我 |
|
harpist
資深會員 發表:3 回覆:251 積分:430 註冊:2002-10-03 發送簡訊給我 |
你真的有試嗎?我這樣做並沒有問題。
X,Y的位置是你可以控制的,控制在你要顯示的位置就可以達到你要的效果。 Label 一樣是在Chart1MouseMove 事件裡面指定位置就可以了。 記得畫之前先呼叫一下 Chart1 的 Repaint() ===================引 用 C.W 文 章=================== ===================引 用 harpist 文 章=================== 你要不要考慮用Chart1->Canvas->TextOutA(X,Y,TEXT) 謝謝! 這個方法是在指定的x,y 坐標點處輸出TEXT, 而我要的是在bottomAxis 和LeftAxis 跟隨光標輸出label / PS:為什麼不能直接顯示本地Load的圖片呢?我在1樓loadup的圖片不能直接顯示.
------
~§~迷時師渡,悟了自渡~§~ |
C.W
一般會員 發表:1 回覆:3 積分:0 註冊:2009-01-16 發送簡訊給我 |
===================引 用 harpist 文 章=================== 你真的有試嗎?我這樣做並沒有問題。 X,Y的位置是你可以控制的,控制在你要顯示的位置就可以達到你要的效果。 Label 一樣是在Chart1MouseMove 事件裡面指定位置就可以了。 記得畫之前先呼叫一下 Chart1 的 Repaint() ===================引 用 C.W 文 章=================== ===================引 用 harpist 文 章=================== 你要不要考慮用Chart1->Canvas->TextOutA(X,Y,TEXT) 謝謝! 這個方法是在指定的x,y 坐標點處輸出TEXT, 而我要的是在bottomAxis 和LeftAxis 跟隨光標輸出label / PS:為什麼不能直接顯示本地Load的圖片呢?我在1樓loadup的圖片不能直接顯示. 非常感谢! 按照您的方法可以了. 我昨天试了,没有成功是因为没有编入下面2条语句 x2:=chart1.BottomAxis.PosAxis; y2:=chart1.LeftAxis.PosAxis; 源码如下 procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var x1,y1,x2,y2:integer;xv,yv:double; begin x1:=chart1.GetCursorPos.X; y1:=chart1.GetCursorpos.y; xv:=chart1.BottomAxis.CalcPosPoint(x1); yv:=chart1.LeftAxis.CalcPosPoint(y1); x2:=chart1.BottomAxis.PosAxis; y2:=chart1.LeftAxis.PosAxis; chart1.Repaint; chart1.Canvas.TextOut(y2,y1,format('%7.2f',[yv])); chart1.Canvas.TextOut(x1,x2,format('%7.2f',[xv])); end; 结案了!! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |