Тема: трикутник Серпінського
Програма повинна малювати трикутник один раз, а малює 2. Малює один раз, потім блимає і малює другий. Як виправити цю помилку?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Triangle_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Paint += Form1_Paint;
public const int n = 5;
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics gr = CreateGraphics();
Pen blackPen = new Pen(Color.Black, 3);
float p;
float ax, bx, cx, ay, by, cy; //Задаем координаты точек внешнего треугольника
ax = 50;
bx = 75;
cx = 100;
ay = 100;
by = 200;
cy = 100;
p = 0.5f;
graphics.DrawLine(new Pen(Color.Black, 2), ax, ay, bx, by); //Строим треугольник по координатам
graphics.DrawLine(new Pen(Color.Black, 2), bx, by, cx, cy);
graphics.DrawLine(new Pen(Color.Black, 2), cx, cy, ax, ay);
{
if (n < 1)
return;
}
ax = ax + (bx - ax) * p; ay = ay + (by - ay) * p; //Определить координаты следующего вложенного треугольника
bx = bx + (cx - bx) * p; by = by + (cy - ay) * p;
cx = ax + (bx - ax) * p; cy = ay + (by - ay) * p;
Triangle(ax, ay, bx, by, n - 1);
Triangle(bx, by, cx, cy, n - 1);
Triangle(cx, cy, ax, ay, n - 1);
}
}
}