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

使用polygon函式遇到的問題

 
gemini07
一般會員


發表:29
回覆:18
積分:14
註冊:2003-04-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-11 19:17:16 IP:210.66.xxx.xxx 訂閱

各位前輩好

我現在遇到了一個問題,我有一個vector是儲存節點的座標,數量是動態自訂的(需求),

並使用polygon函式將這些座標繪製成一個多邊形。但發現都畫不出來,所以想請各位前輩幫我看看是哪裡出了問題

以下是我寫的程式

TPoint *points = new TPoint[ vPoint.size() ];
for( int i = 0; i < vPoint.size() - 1; i )
{
points->x = vPoint[i].x;
points->y = vPoint[i].y;
points ;
}

canvas->Polygon( points, vPoint.size() );

pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-11 23:52:26 IP:219.84.xxx.xxx 未訂閱

問題出在你在指標的處理中有問題,"points "是原因。
另外,你也忘了詳細看polygon的help內容。

話說回來,試試canvas->Polygon(&*vPoint.begin(), vPoint.size()-1);

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-12 00:09:26 IP:61.229.xxx.xxx 未訂閱

正好把例子改好後,要post之前又看了一下,果然pwipwi已經解答了!
不過,既然也把小程式改了,就貼上來給你看了。
(每次pwipwi兄總是切中要點,還提供其它解,很謝謝他)

以下是用加入PaintBox元件,並在onPaint事件上實作

void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
std::vector vPoint(4);

vPoint[0] = Point(10,10);
vPoint[1] = Point(30,10);
vPoint[2] = Point(130,30);
vPoint[3] = Point(240,120);

/* 方法一,但不好,且要注意你for中間的條件有錯。Polygon的最後參數也有錯
TPoint *points = new TPoint[ vPoint.size() ];
TPoint *p = points;
for( int i = 0; i < vPoint.size(); i )
{
points->x = vPoint[i].x;
points->y = vPoint[i].y;
points ;
}

((TPaintBox *)Sender)->Canvas->Polygon( p, vPoint.size()-1 );
*/
/*下面是方法二,用下標法([ ])來copy

TPoint *points = new TPoint[ vPoint.size() ];

for( int i = 0; i < vPoint.size(); i )
{
points[i].x = vPoint[i].x;
points[i].y = vPoint[i].y;
}

((TPaintBox *)Sender)->Canvas->Polygon( points, vPoint.size()-1 );
*/
//方法三,如用pwipwi兄講的,直接用iterator的第一個位址
((TPaintBox *)Sender)->Canvas->Polygon( vPoint.begin(), vPoint.size()-1 );
//或下面,看是否容易理解,總之都是取第一個位址
// ((TPaintBox *)Sender)->Canvas->Polygon( &vPoint.front(), vPoint.size()-1 );
}


===================引 用 文 章===================

問題出在你在指標的處理中有問題,"points "是原因。
另外,你也忘了詳細看polygon的help內容。

話說回來,試試canvas->Polygon(&*vPoint.begin(), vPoint.size()-1);

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
gemini07
一般會員


發表:29
回覆:18
積分:14
註冊:2003-04-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-09-12 10:07:49 IP:210.66.xxx.xxx 訂閱

感謝pwipwi和aftcast前輩

問題已經解決了...謝謝

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