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

如何提高精準度

尚未結案
goldhero
一般會員


發表:7
回覆:9
積分:3
註冊:2003-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-10 21:32:17 IP:218.172.xxx.xxx 未訂閱
我要在平面上作任意兩點的中垂線,我程式寫出來但電腦總是會自動把我的商數算到整數位而已,要如何才可以算到小數位ㄋ??我用ImageMouseDown這個物件來感應滑鼠所點的座標,但X,Y都是int,要如何做ㄋ?? 我的程式如下:        void __fastcall TForm1::Image1MouseDown(TObject *Sender,       TMouseButton Button, TShiftState Shift, int X, int Y) {    Image1->Canvas->Pen->Width=5;    Image1->Canvas->Pen->Style=psDashDot;    Image1->Canvas->Pen->Color=clRed;    Image1->Canvas->MoveTo(X,Y);    Image1->Canvas->LineTo(X,Y);    if(i<3&&Shift.Contains(ssLeft)) { a[i].x=X; a[i].y=Y; Label1->Caption="x=" IntToStr(a[i].x) " y=" IntToStr(a[i].y); C =i; i ; } for(int t=0;ta[t 1].x) { temp=a[t].x; a[t].x=a[t 1].x; a[t 1].x=a[t].x; } } } VD(a,b,C); } //--------------------------------------------------------------------------- void __fastcall TForm1::Exit1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Reset1Click(TObject *Sender) { Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height)); i=0; C=1; } //--------------------------------------------------------------------------- void VD(ip c[10],ip1 d[10],int n) { int k=0,X1,Y1,X2,Y2; ip e[10],f[10]; ip1 eb[10],fb[10]; if(n==1) { Form1->Image1->Canvas->Pen->Width=5; Form1->Image1->Canvas->Pen->Style=psDashDot; Form1->Image1->Canvas->Pen->Color=clRed; Form1->Image1->Canvas->MoveTo(c[0].x,c[0].y); Form1->Image1->Canvas->LineTo(c[0].x,c[0].y); } else if(n==2) { if((c[1].x-c[0].x)==0) { Form1->Image1->Canvas->Pen->Width=2; Form1->Image1->Canvas->Pen->Style=psSolid; Form1->Image1->Canvas->Pen->Color=clBlue; Form1->Image1->Canvas->MoveTo(d[0].x,d[0].y); Form1->Image1->Canvas->LineTo(Form1->Image1->Width,d[0].y); Form1->Image1->Canvas->LineTo(0,d[0].y); } else { M=(c[1].y-c[0].y)/(c[1].x-c[0].x); if(M==0) { Y1=0; X1=b[0].x; Form1->Image1->Canvas->Pen->Width=2; Form1->Image1->Canvas->Pen->Style=psSolid; Form1->Image1->Canvas->Pen->Color=clBlue; Form1->Image1->Canvas->MoveTo(d[0].x,d[0].y); Form1->Image1->Canvas->LineTo(X1,Y1); Form1->Image1->Canvas->MoveTo(X1,Y1); Form1->Image1->Canvas->LineTo(X1,999); } else if(M>0) { Y1=0; X1=(Y1-d[0].y)*(-M) d[0].x; Form1->Image1->Canvas->Pen->Width=2; Form1->Image1->Canvas->Pen->Style=psSolid; Form1->Image1->Canvas->Pen->Color=clBlue; Form1->Image1->Canvas->MoveTo(d[0].x,d[0].y); Form1->Image1->Canvas->LineTo(X1,Y1); Form1->Image1->Canvas->MoveTo(X1,Y1); X2=0; Y2=(X2-X1)*(-1/M) Y1; Form1->Image1->Canvas->LineTo(X2,Y2); } else { X1=0; Y1=(X1-d[0].x)*(-1/M) d[0].y; Form1->Image1->Canvas->Pen->Width=2; Form1->Image1->Canvas->Pen->Style=psSolid; Form1->Image1->Canvas->Pen->Color=clBlue; Form1->Image1->Canvas->MoveTo(d[0].x,d[0].y); Form1->Image1->Canvas->LineTo(X1,Y1); Form1->Image1->Canvas->MoveTo(X1,Y1); Y2=999; X2=(Y2-d[0].y)*(-M) d[0].x; Form1->Image1->Canvas->LineTo(X2,Y2); } } } else { n=n/2; for(int t=0;t
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-10 22:07:11 IP:61.221.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41532 參考看看~~應可解決您的問題 學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU)
goldhero
一般會員


發表:7
回覆:9
積分:3
註冊:2003-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-11 10:24:25 IP:218.172.xxx.xxx 未訂閱
謝謝........問題已經解決了   
系統時間:2024-05-21 12:54:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!