Нарисуйте ковер Sierpinski в C#
В этом примере показано, как нарисовать ковер Sierpinski, тип фрактала, известный как прокладка. Должности
Ключом к коверу Серпинского является следующий DrawRectangle метод.
// Нарисуем ковер в прямоугольнике. private void DrawRectangle(Graphics gr, int level, RectangleF rect) { // Посмотрим, остановимся ли мы. if (level == 0) { // Заполните прямоугольник. gr.FillRectangle(Brushes.Blue, rect); } else { // Разделим прямоугольник на 9 частей. float wid = rect.Width / 3f; float x0 = rect.Left; float x1 = x0 + wid; float x2 = x0 + wid * 2f; float hgt = rect.Height / 3f; float y0 = rect.Top; float y1 = y0 + hgt; float y2 = y0 + hgt * 2f; // Рекурсивно рисуем меньшие ковры. DrawRectangle(gr, level - 1, new RectangleF(x0, y0, wid, hgt)); DrawRectangle(gr, level - 1, new RectangleF(x1, y0, wid, hgt)); DrawRectangle(gr, level - 1, new RectangleF(x2, y0, wid, hgt)); DrawRectangle(gr, level - 1, new RectangleF(x0, y1, wid, hgt)); DrawRectangle(gr, level - 1, new RectangleF(x2, y1, wid, hgt)); DrawRectangle(gr, level - 1, new RectangleF(x0, y2, wid, hgt)); DrawRectangle(gr, level - 1, new RectangleF(x1, y2, wid, hgt)); DrawRectangle(gr, level - 1, new RectangleF(x2, y2, wid, hgt)); } }
Этот метод заполняет прямоугольник. Он начинается с проверки параметра level. Если level равно 0, то метод рисует один из самых маленьких прямоугольников. В этом случае метод просто рисует свой прямоугольник и останавливается.