- •Работа №1 Постановка задачи
- •Краткие теоретические сведения
- •Алгоритм работы программы
- •Работа №2 Постановка задачи
- •Краткие теоретические сведения
- •Работа №3 Постановка задачи
- •Обзор теории
- •Алгоритм работы программы
- •Простой алгоритм заполнения с затравкой
- •Работа №5 Задание
- •Обзор теории
- •Код программ
- •Работа №5 Задание
- •Обзор теории
- •Код программы
- •Работа №6 Задание
- •Обзор теории
- •Графика и случайные числа
- •Кривые Гильберта
- •Фракталы
- •Код программы
- •Кривая Безье
Код программ
private void Form1_Load(object sender, EventArgs e)
{
bmp = new Bitmap(300, 300);
Gr = Graphics.FromImage(bmp);
Gr.Clear(Color.White);
p.Color = Color.Gray;
Gr.DrawRectangle(p, 100, 100, 100, 100);
pictureBox1.Image = bmp;
}
void end(int x, int y, ref Int32 kod, ref Int32 summ)
{
kod = 0;
summ = 0;
if (x < xl) { kod += 1; summ++; };
if (x > xr) { kod += 2; summ++; };
if (y > yn) { kod += 4; summ++; };
if (y < yv) { kod += 8; summ++; };
}
void koen(Int32 x1, Int32 y1, Int32 x2, Int32 y2, ref Int32 vid, ref Int32 kod1, ref Int32 kod2)
{
Int32 sum1 = 0, sum2 = 0;
end(x1, y1, ref kod1, ref sum1);
end(x2, y2, ref kod2, ref sum2);
vid = 2;
if (sum1 == 0 && sum2 == 0) vid = 1;
else
{
Int32 pr = kod1 & kod2;
if (pr != 0) vid = 0;
}
}
int search(Int32 kod, Int32 i)
{
if (i == 4) return kod & 8;
if (i == 3) return kod & 4;
if (i == 2) return kod & 2;
if (i == 1) return kod & 1; return 0;
}
void main()
{
Int32 x1 = Convert.ToInt32(textBox1.Text);
Int32 y1 = Convert.ToInt32(textBox2.Text);
Int32 x2 = Convert.ToInt32(textBox3.Text);
Int32 y2 = Convert.ToInt32(textBox4.Text);
Int32[] okno = new Int32[5];
okno[1] = 100;
okno[2] = 200;
okno[3] = 200;
okno[4] = 100;
Int32 flag = 1;
Double naklon = 0;
Int32 kod1 = 0, kod2 = 0;
if (x2 - x1 == 0) flag = -1;
else
{
naklon = Convert.ToDouble(y2 - y1) / Convert.ToDouble(x2 - x1);
if (naklon == 0) flag = 0;
}
for (Int32 i = 1; i <= 4; i++)
{
Int32 vid = 0;
koen(x1, y1, x2, y2, ref vid, ref kod1, ref kod2);
if (vid == 1) Gr.DrawLine(p, x1, y1, x2, y2);
if (vid == 0) return;
if (search(kod1, i) == (search(kod2,i))) continue;
if (search(kod1, i) == 0)
{
Int32 temp = x1; x2 = x1; x2 = temp;
temp = y1; y2 = y1; y2 = temp;
}
if ((flag != -1) && (i <= 2))
{
y1 = Convert.ToInt32(naklon * Convert.ToDouble(okno[i] - x1)) + y1;
x1 = okno[i];
}
else
{
x1 = Convert.ToInt32((1 / naklon) * Convert.ToDouble(okno[i] - y1)) + x1;
y1 = okno[i];
}
}
Gr.DrawLine(p, x1, y1, x2, y2);
}
private void button1_Click(object sender, EventArgs e)
{
bmp = new Bitmap(300, 300);
Gr = Graphics.FromImage(bmp);
Gr.Clear(Color.White);
p.Color = Color.Gray;
Gr.DrawRectangle(p, 100, 100, 100, 100);
main();
pictureBox1.Image = bmp;
}