有關畫圖的問題 |
尚未結案
|
unungigi3000
一般會員 發表:20 回覆:14 積分:6 註冊:2005-07-20 發送簡訊給我 |
不好意思,我想請教一下為什麼我的程式,沒辦法連成曲線呢??
反而是一條一條的!
該如何做呢??
請大家指導一下,謝謝!!
// #include |
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
hi unungigi3000:
因為你這段CODE 開始的點都是X0.Y0...所以當然每條線都是從X0.Y0位置開始畫.. Image1->Canvas->MoveTo(0,0); 如果你要連接.應該第二條線的起始點是第一條的結束點. 例:將你的CODE改了一下
int x,y; int a[10]={5,10,20,30,40,50,60,70,80,90}; int b[10]={120,110,100,90,120,140,110,70,50,90}; x=0,y=0; for (int i=0 ;i<10 ;i ) { Image1->Canvas->MoveTo(x,y); Image1->Canvas->LineTo(a[i],b[i]); x = a[i]; y = b[i]; }發表人 - pireer 於 2005/09/27 16:39:20 |
unungigi3000
一般會員 發表:20 回覆:14 積分:6 註冊:2005-07-20 發送簡訊給我 |
引言: 不好意思,我想請教一下為什麼我的程式,沒辦法連成曲線呢?? 反而是一條一條的! 該如何做呢?? 請大家指導一下,謝謝!!真的是很謝謝你!! 我了解了! 但小弟還有一個問題!! 執行後畫出的圖似乎原點是在左上角,有沒有辦法是讓原點在左下角呢?? 就是一般的X-Y座標!! 在此先謝謝您了!!// #include |
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
你用下面程式試試.只要將x=0,y=0;
這段改成你要的起始座標就可以了.
int x,y; int a[10]={5,10,20,30,40,50,60,70,80,90}; int b[10]={120,110,100,90,120,140,110,70,50,90}; x=0,y=0; for (int i=0 ;i<10 ;i ) { Image1->Canvas->MoveTo(x,y); Image1->Canvas->LineTo(a[i],b[i]); x = a[i]; y = b[i]; } |
unungigi3000
一般會員 發表:20 回覆:14 積分:6 註冊:2005-07-20 發送簡訊給我 |
引言: 你用下面程式試試.只要將x=0,y=0; 這段改成你要的起始座標就可以了.不好意思,pireer前輩,小弟的意思是 X軸是以右為正 Y軸是以上為正 但小弟改了XY的值並沒有讓座標轉換Y軸還是以下為正 只能決定起點的位置耶!! 還是說BCB本身設定就是這樣呢?? 那有沒有辦法改變呢? 再謝謝pireer前輩的幫忙!int x,y; int a[10]={5,10,20,30,40,50,60,70,80,90}; int b[10]={120,110,100,90,120,140,110,70,50,90}; x=0,y=0; for (int i=0 ;i<10 ;i ) { Image1->Canvas->MoveTo(x,y); Image1->Canvas->LineTo(a[i],b[i]); x = a[i]; y = b[i]; } |
unungigi3000
一般會員 發表:20 回覆:14 積分:6 註冊:2005-07-20 發送簡訊給我 |
引言:恩~~是沒辦法做到嗎?? 那可以在Image上自訂座標嗎? 或者是在form上也可以!! 小弟不想用chart物件來幫忙,只希望用程式來畫圖 不知有沒有辦法呢??引言: 你用下面程式試試.只要將x=0,y=0; 這段改成你要的起始座標就可以了.不好意思,pireer前輩,小弟的意思是 X軸是以右為正 Y軸是以上為正 但小弟改了XY的值並沒有讓座標轉換Y軸還是以下為正 只能決定起點的位置耶!! 還是說BCB本身設定就是這樣呢?? 那有沒有辦法改變呢? 再謝謝pireer前輩的幫忙!int x,y; int a[10]={5,10,20,30,40,50,60,70,80,90}; int b[10]={120,110,100,90,120,140,110,70,50,90}; x=0,y=0; for (int i=0 ;i<10 ;i ) { Image1->Canvas->MoveTo(x,y); Image1->Canvas->LineTo(a[i],b[i]); x = a[i]; y = b[i]; } |
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
hi unungigi3000:
看不太懂你說的X以右為正.Y以上為正. 如果你要畫連續線條的話.
給你看的範例:下面範例繪畫出一個"ㄇ"形狀出來..m.y隨意設個座標. ACanvas->MoveTo( m, y);
ACanvas->LineTo( m, y - 40);
ACanvas->LineTo( m k , y - 40);
ACanvas->LineTo( m k , y); 在上段程式碼中...MoveTo表示起始點的座標.
LineTo表示要畫到哪個座標.如果要畫連續不同座標的線條.
可類似範例中加了兩個LineTo來畫出"ㄇ"型...
至於你說的自訂座標是指你要隨意給他一個座標然後畫出來嗎?
你可以參考範例達成你要的效果..
至於座標最左上角都是由X0.Y0開始.
往右是X 往左是X-
往上是Y- 往下是Y 或是你直接把要完成的圖形貼出來比較快.
|
unungigi3000
一般會員 發表:20 回覆:14 積分:6 註冊:2005-07-20 發送簡訊給我 |
引言: hi unungigi3000: 看不太懂你說的X以右為正.Y以上為正. 如果你要畫連續線條的話. 給你看的範例:下面範例繪畫出一個"ㄇ"形狀出來..m.y隨意設個座標. ACanvas->MoveTo( m, y); ACanvas->LineTo( m, y - 40); ACanvas->LineTo( m + k , y - 40); ACanvas->LineTo( m + k , y); 在上段程式碼中...MoveTo表示起始點的座標. LineTo表示要畫到哪個座標.如果要畫連續不同座標的線條. 可類似範例中加了兩個LineTo來畫出"ㄇ"型... 至於你說的自訂座標是指你要隨意給他一個座標然後畫出來嗎? 你可以參考範例達成你要的效果.. 至於座標最左上角都是由X0.Y0開始. 往右是X+ 往左是X- 往上是Y- 往下是Y+ 或是你直接把要完成的圖形貼出來比較快.不好意思,小弟表達的不太清楚!! 所以貼了一個我想寫出的的圖檔!! 我不知道他是如何做出來的,我所說的X向右為正,Y向上為正,就是這樣的情形!! 如果Y向下為正的話,曲線不就就顛倒了嗎?? 小弟實在不解,該如何寫這樣子的程式呢?? 再謝謝pireer大大幫忙!! |
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
如下圖...按下Button1會畫出如圖的畫面.
請參考程式碼改成你要的就可以了.
//--------------------------------------------------------------------------- #include |
unungigi3000
一般會員 發表:20 回覆:14 積分:6 註冊:2005-07-20 發送簡訊給我 |
引言: hi unungigi3000: 看不太懂你說的X以右為正.Y以上為正. 如果你要畫連續線條的話. 給你看的範例:下面範例繪畫出一個"ㄇ"形狀出來..m.y隨意設個座標. ACanvas->MoveTo( m, y); ACanvas->LineTo( m, y - 40); ACanvas->LineTo( m k , y - 40); ACanvas->LineTo( m k , y); 在上段程式碼中...MoveTo表示起始點的座標. LineTo表示要畫到哪個座標.如果要畫連續不同座標的線條. 可類似範例中加了兩個LineTo來畫出"ㄇ"型... 至於你說的自訂座標是指你要隨意給他一個座標然後畫出來嗎? 你可以參考範例達成你要的效果.. 至於座標最左上角都是由X0.Y0開始. 往右是X 往左是X- 往上是Y- 往下是Y 或是你直接把要完成的圖形貼出來比較快.先謝謝pireer前輩,幫我寫出了參考的code,怪我的表達不好!! 因為畫曲線的數據是由txt讀出來的,數據不是固定的!! 所以小弟是想將數據讀取後放在陣列裡,再使用MoveTo跟LineTo來做連接數據的工作!! 但Image的座標與小弟想要的x往右為正,Y往上為正顛倒,使得若是變動的數據畫得圖就可能不對了!! 該如何是好呢?? 小弟覺得是不是要先定義Image的座標呢?? |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
unungigi3000
一般會員 發表:20 回覆:14 積分:6 註冊:2005-07-20 發送簡訊給我 |
引言: unungigi3000 您好: 看來您需要的是先將 Image1 上的 Y 軸 0 點位置設定好,例如 int Y0 = Image1->Height/2; 或是 int Y0 = (Image1->Height/3)*2;,然後在繪製的時候用前述的 Y0 減掉取出的 Y 值即可,如此一來;正負值會顛倒過來,正值會小於 Y0 (往上繪製),而負值則會大於 Y0 (往下繪製)。 7 天天敲鍵盤 v 時時按滑鼠 8謝謝RedSnow大大,小弟剛剛也想出來了!! 真是十分的感謝您! 也謝謝pireer大大,真是麻煩您了!!都怪小弟太笨了!! 但pireer大大先回答了小弟的第一個問題,所以分數只能給pireer大大了!! 對RedSnow大大很抱歉喔!! |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |