Рисование фигур - C#
Формулировка задачи:
Описать базовый класс Фигура, который имеет один виртуальный метод void Draw (Graphics g).
Описать 3 класса наследники Окружность, Треугольник и Прямоугольник.
Классы наследники имеют набор полей для однозначного задания фигур.
Решение задачи: «Рисование фигур»
textual
Листинг программы
class Figure
{
public virtual void Draw(Graphics g){}
}
class Circle: Figure
{
int r;
Point o;
public Circle(Point O, int R)
{
r = R;
o = O;
}
public override void Draw(Graphics g)
{
Rectangle rect = new Rectangle();
rect.X = o.X - r;
rect.Y = o.Y - r;
rect.Width = r << 1;
rect.Height = r << 1;
g.DrawEllipse(new Pen(Color.Red, 2F), rect);
}
}
class Triangle: Figure
{
Point[] points;
public Triangle(Point[] p)
{
if (p.Length != 3)
throw new Exception("Длина массива должна быть равна трем.");
points = p;
}
public override void Draw(Graphics g)
{
g.DrawPolygon(new Pen(Color.Red, 2F), points);
}
}
class Square: Figure
{
Rectangle rect;
public Square(Rectangle r)
{
rect = r;
}
public override void Draw(Graphics g)
{
g.DrawRectangle(new Pen(Color.Red, 2F), rect);
}
}
/*********************************/
void Form1_Paint(object sender, PaintEventArgs e)
{
Point[] p = new Point[3];
p[0] = new Point(50, 50);
p[1] = new Point(100, 100);
p[2] = new Point(50, 150);
Triangle t = new Triangle(p);
t.Draw(e.Graphics);
Square s = new Square(new Rectangle(50, 50, 150, 100));
s.Draw(e.Graphics);
Circle c = new Circle(new Point(60, 80), 50);
c.Draw(e.Graphics);
}