2016-08-27 2 views
0

C#ユーザーコントロールのペイント方法で4つの図形(四角形、正方形、三角形、円)をパネルに描きたい。私はコードの下で試してみましたが、同じ場所(x、y)に図形を描画します。私は4つのランダム変数を宣言しましたが、うまくいきませんでした。私は別々の場所を別々に描く必要があります。誰も私を助けることができるのですか?ここでC#のランダムな場所に図形を描く

は私のコードです:

int recX; 
int recY; 
int squX; 
int squY; 
int circleX; 
int circleY; 
int triX; 
int triY; 
public int shapeType { get; set; } 


public GameArea() 
{ 
    InitializeComponent(); 
    food = new Food(randFood); 
    Random randRectangle = new Random(); 
    recX = randRectangle.Next(1, 35) * 10; 
    recY = randRectangle.Next(1, 35) * 10; 

    Random randSquare = new Random(); 
    squX = randSquare.Next(1, 35) * 10; 
    squY = randSquare.Next(1, 35) * 10; 

    Random randCircle = new Random(); 
    circleX = randCircle.Next(1, 35) * 10; 
    circleY = randCircle.Next(1, 35) * 10; 

    Random randTriangle = new Random(); 
    triX = randTriangle.Next(1, 35) * 10; 
    triY = randTriangle.Next(1, 35) * 10; 
} 
private void GameArea_Paint(object sender, PaintEventArgs e) 
{ 
    paper = e.Graphics; 
    if (shapeType != 0) 
    { 

     if(shapeType == Convert.ToInt32(Enums.ShapeTypes.Rectangle)) 
     { 
      food.drawFood(paper, shapeType, recX,recY); 
      food.drawSquare(paper, squX, squY); 
      food.drawCircle(paper, circleX, circleY); 

     } 
} 

答えて

1

は、そうでなければ、同じシードを使用することがあります何度も同じランダムを使用してください。

例:

Random rndLocGen = new Random(); 
recX = rndLocGen.Next(1, 35) * 10; 
recY = rndLocGen.Next(1, 35) * 10; 
cirX = rndLocGen.Next(1, 35) * 10; 
cirY = rndLocGen.Next(1, 35) * 10; 
+0

はそれが本当に働い#TimHinzありがとうございました。以前は、ユーザーコントロールのペイントメソッドで試しましたが、ペイントメソッドが常に起動しているため、常にランダムなシェイプを生成します。 Thnkzたくさん。 – Bhagya

+0

これはあまりにも近すぎる可能性があります。ここにはないが一般的に。ランダムをクラスレベルに移動することはより安全です。 – TaW

+0

#TaW問題はありますが、それを解決する方法を私に教えてください。 – Bhagya

関連する問題