Генерация картинок рандомно - 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 }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д