在c#中随机位置绘制形状

本文关键字:绘制 位置 随机 | 更新日期: 2023-09-27 18:04:21

我想用c#用户控件绘制方法在面板上绘制四个形状(矩形,正方形,三角形,圆形)。我已经尝试下面的代码,但它会在相同的位置(x,y)绘制形状。我声明了四个随机变量,但它不起作用。我需要在不同的位置分别画出这些形状。有人能帮我吗?

下面是我的代码:
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);
        }
}

在c#中随机位置绘制形状

反复使用相同的随机,否则你将使用相同的种子。

的例子:

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;