我想使用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);
}
}
一遍又一遍地使用相同的随机数,否则您将使用相同的种子。
例子:
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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句