請問圖形問題:二點之間如何連成一條線 |
尚未結案
|
spaceworld1108
一般會員 發表:30 回覆:19 積分:9 註冊:2004-05-14 發送簡訊給我 |
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
Hello spaceworld1108, 我試過用float,但程式不會有問題:
void __fastcall TForm1::Button1Click(TObject *Sender) { double x,y; //float x,y; x=20.5; y=200.3; Canvas->MoveTo(x,y); Canvas->TextOutA(x,y,FloatToStr(x) " , " FloatToStr(y)); x =150.15; y =202.6; Canvas->LineTo(x,y); Canvas->TextOutA(x,y,FloatToStr(x) " , " FloatToStr(y)); Canvas->MoveTo(x,y); x =88.5; y-=302.6; Canvas->LineTo(x,y); Canvas->TextOutA(x,y,FloatToStr(x) " , " FloatToStr(y)); } |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
spaceworld1108 您好:
引言: 請問各位大大: 我目前有兩個點(x[0]=1.55 ,y[0]=2.66 ) (x[1]=3.5 ,y[1]=4.6 ) 有什麼方法可以將它連接成一條線 因為我看過書 Canvas->LineTo 的方法只能使用int無法用float 還是說有其他方法 麻煩各位大大您的問題其實並沒有您憂慮的那般複雜。 Form1->Canvas->MoveTo(x[0], y[0]); Form1->Canvas->LineTo(x[1], y[1]); 這樣就行了,BCB會自動幫您作型態轉換。 不過在程式中明確轉換型態是比較好的習慣, Form1->Canvas->MoveTo((int)x[0], (int)y[0]); Form1->Canvas->LineTo((int)x[1], (int)y[1]); 如果真要說有什麼問題,大概就是float轉換成整數int時,到底規則該怎麼定? 是要四捨五入或是無條件捨去還是有小數時無條件進1,就要依您的使用需求來決定了。 所以有可能您需要寫一個函式去轉換出您要的整數: int myInt(float value) { int result; // ..... // 您的整數取得規則,設定result的值 // ..... return result; } Form1->Canvas->MoveTo(myInt( x[0] ), myInt( y[0])); Form1->Canvas->LineTo(myInt( x[1] ), myInt( y[1]));RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
spaceworld1108
一般會員 發表:30 回覆:19 積分:9 註冊:2004-05-14 發送簡訊給我 |
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
|
spaceworld1108
一般會員 發表:30 回覆:19 積分:9 註冊:2004-05-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |