全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1964
推到 Plurk!
推到 Facebook!

紀錄影像座標

答題得分者是:s9515603
jenglin
一般會員


發表:45
回覆:32
積分:15
註冊:2006-10-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-04 17:06:58 IP:163.18.xxx.xxx 訂閱
各位前輩們好:
我有找到滑鼠移動時顯示該點的XY座標的程式碼,那我想請問我先後在影像上點幾個點,要怎麼把這些點的座標分別記錄到Edit的元件上呢?
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-04 19:22:33 IP:122.124.xxx.xxx 訂閱
請PO上您測試的程式碼讓前輩們幫您看看^_^
jenglin
一般會員


發表:45
回覆:32
積分:15
註冊:2006-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-04 20:20:57 IP:163.18.xxx.xxx 訂閱
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
TColor a = Image1->Canvas->Pixels[X][Y];
Label1->Caption = X;
Label2->Caption = Y;
}
我已經改成MouseDown了,滑鼠點一下會紀錄該點座標,但是點其他點時就會覆寫掉,想請問要怎麼才能分開紀錄?
===================引 用 taishyang 文 章===================
請PO上您測試的程式碼讓前輩們幫您看看^_^
編輯記錄
jenglin 重新編輯於 2007-12-04 20:26:17, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-05 09:49:26 IP:122.124.xxx.xxx 訂閱
您不是要放在TEdit嗎? 怎麼又放到TLabel呢?
jenglin
一般會員


發表:45
回覆:32
積分:15
註冊:2006-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-12-05 13:18:41 IP:163.18.xxx.xxx 訂閱
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TColor a = Image1->Canvas->Pixels[X][Y];
Edit1->Text = X;
Edit2->Text = Y;
}
抱歉,應該是這樣!請問怎麼才能連續點幾個點都把座標記錄下來?
===================引 用 taishyang 文 章===================
您不是要放在TEdit嗎? 怎麼又放到TLabel呢?
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-12-05 13:36:00 IP:122.124.xxx.xxx 訂閱
建議可以用TMemo比較合理

AnsiString szPos;
szPos.sprintf("x:%d, y:%d", X, Y);
Memo1->Lines->Add(szPos);
jenglin
一般會員


發表:45
回覆:32
積分:15
註冊:2006-10-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-12-18 01:20:33 IP:163.18.xxx.xxx 訂閱
請問一下怎麼把其中一行的X跟Y的值分別存成2個參數呢?
我找到可以存一整行的,如下:
T= StrToInt(Memo1->Lines->Strings[1]);
請問怎麼讓它可以X跟Y分開存成2個參數呢?感謝...

===================引 用 taishyang 文 章===================
建議可以用TMemo比較合理

AnsiString szPos;
szPos.sprintf("x:%d, y:%d", X, Y);
Memo1->Lines->Add(szPos);

編輯記錄
jenglin 重新編輯於 2007-12-18 01:21:03, 註解 無‧
s9515603
一般會員


發表:2
回覆:1
積分:5
註冊:2007-12-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-12-18 12:03:21 IP:163.17.xxx.xxx 訂閱
你可以試試我的想法

[code cpp]

int *mouse_point=new int[2*100]; //全域,記錄座標的地方,只能記錄100筆,自行增加。
int mouse_count=0; //全域,目前記錄的筆數。。

main by mouse event
{
mouse_point[2*mouse_count 0]=X; // 記錄 X
mouse_point[2*mouse_count 1]=Y; // 記錄 Y
mouse_count ;
}

out
{
int outs=StrToInt(Edit1->Text); // 輸出第 ? 筆 ,用edit控制
RichEdit1->Lines->Add("X:" (String)mouse_point[2*outs 0] " 、Y:" (String)mouse_point[2*outs 1]); // 輸出
}

[/code]

記得程式結束時在加個 delete mouse_point;
這樣既不用輸出,又可以隨時呼叫。
我沒實際在程式中run,但要是我,我會寫成這樣,你試試,如有bug,我在上來除吧。

其它的功能自行延申吧!
------
我最愛寫程式
編輯記錄
s9515603 重新編輯於 2007-12-18 16:35:05, 註解 無‧
s9515603 重新編輯於 2007-12-18 16:40:47, 註解 無‧
系統時間:2024-05-20 4:31:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!