
Среда программирования:
Visual Studio 2013
Статья по теме:
Пример построения Н-фрактала. Вначале строится одна фигура, потом 4, потом 16. Размер каждых следующих фигур меньше в 2 раза предыдущих.
Можно поменять входные значения 128 и 2
H_fractal(width_ / 2, height_ / 2, 128, 2);
128 — размер первой Н
2-размер последней Н
Фрактал отрисовывается по нажатию на окно
Код программы:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication2 { public partial class Form1 : Form { private void H(int x, int y, int razmer)//функция отрисовки одной Н { //Выбираем перо "myPen" черного цвета Black //толщиной в 1 пиксель: Pen myPen = new Pen(Color.Black, 1); //Объявляем объект "g" класса Graphics и предоставляем //ему возможность рисования на pictureBox1: Graphics g = Graphics.FromHwnd(pictureBox1.Handle); g.DrawLine(myPen, x - razmer, y - razmer, x - razmer, y + razmer); g.DrawLine(myPen, x - razmer, y, x + razmer, y); g.DrawLine(myPen, x + razmer, y - razmer, x + razmer, y + razmer); } private void H_fractal(int x1, int y1, int razm_f, int minimum) { //вершины фигуры Н int x11; int y11; int x01; int y01; int x00; int y00; int x10; int y10; x11 = x1 + razm_f; y11 = y1 + razm_f; x01 = x1 - razm_f; y01 = y1 + razm_f; x10 = x1 + razm_f; y10 = y1 - razm_f; x00 = x1 - razm_f; y00 = y1 - razm_f; H(x1, y1, razm_f);//рисуем одну фигуру Н razm_f = razm_f / 2;//уменьшаем размер в 2 раза // если размер не меньше минимального, то рисуем в 4-х вершинах if (razm_f >= minimum) { H_fractal(x11, y11, razm_f, minimum); H_fractal(x01, y01, razm_f, minimum); H_fractal(x10, y10, razm_f, minimum); H_fractal(x00, y00, razm_f, minimum); } } private int height_; private int width_; public Form1() { InitializeComponent(); height_ = pictureBox1.Height; //высота элемента pictureBox1 width_ = pictureBox1.Width; // ширина } private void pictureBox1_Click(object sender, EventArgs e)//по нажатию на pictureBox1 { H_fractal(width_ / 2, height_ / 2, 128, 2); //H_fractal(координата центра по горизонтали,вертикали,размер первой Н, размер последней Н) } } }
Прикрепленный файл | Размер |
---|---|
riza_H_frakt_C_sharp.zip | 55.17 кб |