Генерация картинок рандомно - C#

Узнай цену своей работы

Формулировка задачи:

Передо мной стоит задача - разработать тест по методике Ландольта. Суть его в том, чтобы находить разрывы в кольцах(всего разрывов 8 - на 1, 3, 5, 6, 7, 9, 10, 12 часов, картинки прикреплены). Соответственно, каждое кольцо с разрывом - отдельная картинка. По заданию нужно чтобы они генерировались случайным образом, и в большом количестве. Кто подскажет, как это осуществить? Буду очень признателен. P.S. Еще бонусом - кто знает, как сделать так, чтобы по нажатию на картинку она меняла свое состояние(т.е.из неактивного переходила в активное).

Решение задачи: «Генерация картинок рандомно»

textual
Листинг программы
public class LandoltRings
{
    /// <summary>
    /// Метод генерирует кольцо с разрывом. Разрыв расположен случайным образом в одном из 8 возможных положений
    /// </summary>
    public static Bitmap GetRandomRing()
    {
        var rnd = new Random(DateTime.Now.Millisecond);
        var type = (LandoltRingEnum)rnd.Next(7);
        RingEnum = type;
        return CreateRing(type);
    }
    /// <summary>
    /// Ширина зазора в градусах
    /// </summary>
    const float GAP = 30;
    public static LandoltRingEnum RingEnum { get; set; }
 
    private static Bitmap CreateRing(LandoltRingEnum ringEnum)
    {
        float angle;
        switch (ringEnum)
        {
            case LandoltRingEnum.Ring1:
                angle = 30;
                break;
            case LandoltRingEnum.Ring5:
                angle = 150;
                break;
            case LandoltRingEnum.Ring6:
                angle = 180;
                break;
            case LandoltRingEnum.Ring7:
                angle = 210;
                break;
            case LandoltRingEnum.Ring9:
                angle = 270;
                break;
            case LandoltRingEnum.Ring10:
                angle = 300;
                break;
            case LandoltRingEnum.Ring12:
                angle = 360;
                break;
            default:
                throw new ArgumentOutOfRangeException(nameof(ringEnum), ringEnum, null);
        }
        angle -= 90;
        var result = new Bitmap(100, 100);
        using (var g = Graphics.FromImage(result))
        {
            using (var pen = new Pen(Color.Black, 10))
            {
                var rect = new RectangleF(0, 0, result.Width, result.Height);
                rect.Inflate(new SizeF(-pen.Width / 2, -pen.Width / 2));
                g.DrawArc(pen, rect, angle + GAP / 2, 360 - GAP);
            }
        }
        return result;
    }
}
 
public enum LandoltRingEnum
{
    Ring1,
    Ring5,
    Ring6,
    Ring7,
    Ring9,
    Ring10,
    Ring12
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы