2012-09-03 209 views
-2

來自其他帖子的引用:初始化100點陣列

請致電Graphics.FillPolygon()。你需要一個刷,而不是一支筆,你必須把你點到一個點從MSDN array Point[].

的示例代碼是這樣的:

// Create solid brush. 
SolidBrush^ blueBrush = gcnew SolidBrush(Color::Blue); 

// Create points that define polygon. 
Point point1 = Point(50,50); 
Point point2 = Point(100,25); 
Point point3 = Point(200,5);  
Point point4 = Point(250,50); 
Point point5 = Point(300,100); 
Point point6 = Point(350,200); 
Point point7 = Point(250,250); 
array<Point>^ curvePoints = {point1,point2,point3,point4,point5,point6,point7}; 

這是可怕的!我必須輸入一百個等距點!

將多邊形繪製到屏幕上。

e->Graphics->FillPolygon(blueBrush, curvePoints); 

我已經嘗試了很多東西:

array<Point,2>^ aPoints; 
//Points tabPoints[10][10];//= new Points[10][10]; 
Points = gcnew array<Point,2>(10,10); 
//init des tableaux 

for (int i = 0;i<10;i++) 
{ 
    for(int j =0;j<10;j++) 
    { 
    //tabPoints[i][j].pX =i*10; 
    //tabPoints[i][j].pY = j * 10; 
    // = new Points(i*10,j*10); 
    aPoints[i,j]= new Point(i*20,j*20); 
    } 
} 

他們沒有工作!

+1

問題是? ... – GolezTrol

+0

_Really?_如何在C++/CLI中創建100點數組? – Sassinak

+0

擺脫循環內的'new'。你想要一個'Point'值,而不是指向一個的指針。 (MSDN有這個權利) –

回答

1

A 2-d數組不一定是你想要的,但你可以讓你當前的代碼工作,只是一個微小的變化:

  • 得到循環中擺脫new。你想要一個Point的值,而不是一個指針。

MSDN有這部分權利已經。

1

你現在得到的不是100點陣列,而是10x10 2D陣列。嘗試gcnew array<Point>(100),你就可以將它傳遞給FillPolygon。

+0

@本Voigt的答案是正確的,謝謝。事實證明我畢竟不需要FillPolygon;一個2d數組可以很好地執行,fillEllipse可以用於數組中的每個點。我仍然在學習如何在這個論壇中解決問題:我如何將他的答案標記爲正確答案? – Sassinak

+0

他沒有發佈答案,他發表了評論。這個慣例似乎是要求他把它作爲我剛剛完成的答案發布。 –