微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用循环随机选择一个形状来绘制多个形状?

如何解决如何使用循环随机选择一个形状来绘制多个形状?

当我想以随机方式显示我的对象时卡住了。 假设我有这个面板,假设矩形和椭圆是对象

Example

我需要做什么才能让它们以这种形式显示

我需要使用 Random n = new Random 吗?或者有另一种方式。

这是我的尝试之一,但我不知道如何集成随机函数显示它们。

do
{
    dr.DrawEllipse(Bpen,i + 30,25,25);
    i += 50;
} 
while (i <= this.Width);

解决方法

您可以使用一系列可用项,例如 { squareType,circleType }

然后在该数组上随机选择 0..Length 以选择并绘制相关形状。

例如你可以使用这个枚举:

public enum Shapes
{
  Circle,Square
}

并声明这些成员:

static readonly Array ShapesValues = Enum.GetValues(typeof(Shapes));
static readonly int ShapesCount = ShapesValues.Length;

还有这个 RNG:

static readonly Random random = new Random();

所以你可以写:

int posX = 0;
do
{
  switch ( ShapesValues.GetValue(random.Next(ShapesCount)) )
  {
    case Shapes.Circle:
      // ...
      break;
    case Shapes.Square:
      // ...
      break;
    default:
      throw new NotImplementedException();
  }
  posX += 50;
}
while ( posX <= Width );

通过这样做,您可以以干净且可维护的方式定义和管理任何必要的形状。

如果形状可以有不同的大小,请考虑使用中间变量来处理。

您也可以编写此代码以使代码更安全:

static readonly ReadOnlyCollection<Shapes> ShapesValues 
  = Array.AsReadOnly(Enum.GetValues(typeof(Shapes)).Cast<Shapes>().ToArray());

static readonly int ShapesCount = ShapesValues.Count;

还有:

switch ( ShapesValues[random.Next(ShapesCount)] )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。