image元件擺在Chart上,還可get到滑鼠在Chart上的變化嗎 |
答題得分者是:RaynorPao
|
jsjs2601
一般會員 發表:7 回覆:7 積分:2 註冊:2008-09-30 發送簡訊給我 |
各位先進,小弟碰到一個問題,就是
TeeChart元件裡,series裡的shape,似乎沒辦法畫出多於四個邊以上的多邊形,所以小弟想到了在TeeChart元件上再擺一個image元件,並讓image元件透明化,然後在image元件上畫多邊形。 而當我只拉一個TeeChart元件時,加入下列程式碼,可以get到滑鼠在chart裡,x,y軸的座標 void __fastcall TForm1::Chart1MouseMove(TObject *Sender, TShiftState Shift,int X, int Y) { int XPos,YPos; XPos=Chart1->BottomAxis->CalcPosPoint(X); YPos=Chart1->LeftAxis->CalcPosPoint(Y); StatusBar1->Panels->Items[0]->Text= "X=" IntToStr(XPos) " Y=" IntToStr(YPos); } 但是當我再拉一個image元件到TeeChart元件裡面,並覆蓋在座標圖上之後,似乎就只能get到image的MouseMove,沒辦法再get到Chart1的MouseMove。 請問各位先進,有什麼方法可以解決這問題嗎? |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
先試試看在 Image1MouseMove 裡面加入以下的程式碼,是否可行?
[code cpp] void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { // 這裡做你原本想要做的事情 // ...略... // 最後加入以下這一段程式碼 TPoint p; p.x=X; p.y=Y; p=Chart1->ScreenToClient(Image1->ClientToScreen(p)); Chart1MouseMove(Sender, Shift, p.x, p.y); } [/code]
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
jsjs2601
一般會員 發表:7 回覆:7 積分:2 註冊:2008-09-30 發送簡訊給我 |
版大~真是太感謝了,可以用!沒有問題~
但是這一行不太了解,只知道看起來是將訊息轉換 p=Chart1->ScreenToClient(Image1->ClientToScreen(p)); 可以請版大解說一下嗎? ===================引 用 RaynorPao 文 章=================== 先試試看在 Image1MouseMove 裡面加入以下的程式碼,是否可行? [code cpp] void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { // 這裡做你原本想要做的事情 // ...略... // 最後加入以下這一段程式碼 TPoint p; p.x=X; p.y=Y; p=Chart1->ScreenToClient(Image1->ClientToScreen(p)); Chart1MouseMove(Sender, Shift, p.x, p.y); } [/code] |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
(1)每一個元件都會有自己的相對座標,從元件的左上角開始,座標是 (0, 0),往右移動,則 X 軸座標累加,往下移動,則 Y 軸座標累加,依此類推
(2)所以當你把 Image1 元件放到 Chart1 元件裡面之後,在 Image1MouseMove 裡面得而的 X 和 Y,是對 Image1 元件的座標 (X, Y),不可以直接套用到 Chart1 元件 (3)因此必須透過轉換,先把 Image1元件的座標,轉換成螢幕的座標,再由螢幕的座標,轉換成 Chart1 元件的座標,這樣才會正確 (4)你可以參考 BCB Help 裡面有關於 ClientToScreen 及 ScreenToClient 的相關說明,應該就會更清楚了 (5)只有一種情況可以省略轉換座標,就是當 Image1 和 Chart1 兩個元件的長、寬相同,且完全重疊,就可以省略轉換座標了
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
jsjs2601
一般會員 發表:7 回覆:7 積分:2 註冊:2008-09-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |