using System Drawing using System Windows Forms using System Drawing D

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace Кривая_Леви
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true);
BackColor = Color.Black; //Задний фон формы
Build(15); // На вход функция получает значение 15 итераций
}
void Draw_Levy(GraphicsPath path, float x1, float x2, float y1, float y2, int i)
{
float x3, y3;
if (i == 0)
path.AddLine(x1, y1, x2, y2); // Строит отрезок по 4 точкам
else
{
x3 = (x1 + x2) / 2 + (y2 - y1) / 2; //Изменение значений
y3 = (y1 + y2) / 2 - (x2 - x1) / 2; //координат
Draw_Levy(path, x1, x3, y1, y3, i - 1); //Уменьшение значения
Draw_Levy(path, x3, x2, y3, y2, i - 1); //повторений
}
}
GraphicsPath path = new GraphicsPath();
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; // Характеристики
e.Graphics.DrawPath(Pens.Lime, path); // линии
}
void Build(int iterations)
{
path = new GraphicsPath(); //Инструмент рисования
Draw_Levy(path, 250, 450, 250, 250, iterations);
}
}
}