線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1466
推到 Plurk!
推到 Facebook!

請問滑鼠移動,可否去干涉?

尚未結案
harktrip
一般會員


發表:30
回覆:30
積分:12
註冊:2007-04-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-19 14:54:01 IP:61.221.xxx.xxx 訂閱
我的畫布上,因為不需要讓滑鼠在每一個座標都停留..

換句話說...

比如說 我希望 8點 8點的跳動,如何做到這效果

現在的座標 160,80 , 往右下移一點點 就 168,88...像這樣的
gac
初階會員


發表:2
回覆:28
積分:26
註冊:2004-08-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-24 22:41:14 IP:218.167.xxx.xxx 未訂閱
<textarea class="cpp" rows="10" cols="60" name="code"> const int X_UNIT_PIXEL = 8; const int Y_UNIT_PIXEL = 8; const int THRESHOLD = 1; void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { static int iXOldPos = X; static int iYOldPos = Y; if( iXOldPos == X && iYOldPos == Y ) return; if( (iXOldPos-X) >= THRESHOLD ) iXOldPos = X - (X % X_UNIT_PIXEL) - X_UNIT_PIXEL; else if( (iXOldPos-X) <= -THRESHOLD ) iXOldPos = X - (X % X_UNIT_PIXEL) X_UNIT_PIXEL; else iXOldPos = X; if( (iYOldPos-Y) >= THRESHOLD ) iYOldPos = Y - (Y % Y_UNIT_PIXEL) - Y_UNIT_PIXEL; else if( (iYOldPos-Y) <= -THRESHOLD ) iYOldPos = Y - (Y % Y_UNIT_PIXEL) Y_UNIT_PIXEL; else iYOldPos = Y; TPoint tNewPos = Image1->ClientToScreen(TPoint(iXOldPos, iYOldPos)); SetCursorPos(tNewPos.x, tNewPos.y); } </textarea> 試試看吧,好像沒有很順,但大概是像這樣吧?!
------
我..........還很嫩!
harktrip
一般會員


發表:30
回覆:30
積分:12
註冊:2007-04-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-28 10:06:52 IP:61.221.xxx.xxx 訂閱

===================引 用 gac 文 章===================
試試看吧,好像沒有很順,但大概是像這樣吧?!



的確不是很順
因為移動速度變快了
gac
初階會員


發表:2
回覆:28
積分:26
註冊:2004-08-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-01 00:55:59 IP:218.160.xxx.xxx 未訂閱
<textarea class="cpp" rows="10" cols="60" name="code">const int X_UNIT_PIXEL = 8; const int Y_UNIT_PIXEL = 8; void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { static int s_iTrackX = 0, s_iTrackY = 0; static int s_iSetupX = 0, s_iSetupY = 0; if(abs(X-s_iTrackX) > X_UNIT_PIXEL) s_iSetupX = s_iTrackX = X - (X % X_UNIT_PIXEL); if(abs(Y-s_iTrackY) > Y_UNIT_PIXEL) s_iSetupY = s_iTrackY = Y - (Y % Y_UNIT_PIXEL); s_iTrackX = X - s_iSetupX; s_iTrackY = Y - s_iSetupY; s_iSetupX = (abs(s_iSetupX-s_iTrackX) >= X_UNIT_PIXEL)?(s_iTrackX-(s_iTrackX%X_UNIT_PIXEL)):s_iSetupX; s_iSetupY = (abs(s_iSetupY-s_iTrackY) >= Y_UNIT_PIXEL)?(s_iTrackY-(s_iTrackY%Y_UNIT_PIXEL)):s_iSetupY; TPoint tNewPos = Image1->ClientToScreen(TPoint(s_iSetupX, s_iSetupY)); SetCursorPos(tNewPos.x, tNewPos.y); } </textarea>
這樣應該有比前一版好了?
根據以前的經驗,在滑鼠移動太快的情況下,
TImage :: On Mouse Move() 會收不到大部分的event,
所以在這裡面實作有先天上的限制。
------
我..........還很嫩!
編輯記錄
gac 重新編輯於 2007-05-01 00:56:56, 註解 無‧
gac 重新編輯於 2007-05-01 00:57:54, 註解 "OnMouseMove" 會變成 "forbidden" ~~‧
gac 重新編輯於 2007-05-01 00:59:37, 註解 無‧
harktrip
一般會員


發表:30
回覆:30
積分:12
註冊:2007-04-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-02 15:06:13 IP:61.221.xxx.xxx 訂閱
gac 大 感恩啦
你的第二個程式
我也試了
可是滑鼠移到該區域時 變的很緩慢
還是不順


恩 我也在研究看看
系統時間:2024-05-16 13:00:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!