Я пытаюсь выучить c#, а в c# Я пытаюсь реализовать шаблон фабричного дизайна для рисования базовых c фигур, таких как круг, прямоугольник, треугольник и т. Д. c. Я создал класс интерфейса IShape
. И другие три класса Circle, Rectangle и Triangle. Я также создал метод ShapeFactory
stati c. Эти классы можно вызывать после из класса компилятора и рисовать в другом окне, т.е. в окне вывода. Ниже приведен код.
//IShape Class
namespace CPaint.Class
{
public interface IShape
{
void Draw();
}
}
//Cicle Class
namespace CPaint.Class
{
internal class Circle : IShape
{
//public Output outputWindow;
private float x;
private float y;
private Color color;
private float radius;
private Graphics graphics;
public Circle(Color color, float x, float y, float radius)
{
this.color = color;
this.x = x;
this.y = y;
this.radius = radius;
}
public void Draw()
{
Pen pen = new Pen(Color.Black, 4);
SolidBrush brush = new SolidBrush(color);
graphics.FillEllipse(brush, x, y, radius, radius);
graphics.DrawEllipse(pen, x, y, radius, radius);
}
}
}
//Triangle class
namespace CPaint.Class
{
internal class Triangle : IShape
{
private float x;
private float y;
private Color color;
private float side1;
private float side2;
private float side3;
public Triangle(Color color, float x, float y, float side1, float side2, float side3)
{
this.color = color;
this.x = x;
this.y = y;
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public void Draw()
{
//will write drawing code here...
}
}
}
//Shape Factory Class
namespace CPaint.Class
{
public class ShapeFactory
{
public static IShape GetShape(string shapeType, Color color, float x, float y, float height, float width, float radius, float side1, float side2, float side3)
{
if (shapeType == null)
{
return null;
}
if (shapeType.Equals("circle"))
{
return new Circle(color, x, y, radius);
}
else if (shapeType.Equals("rectangle"))
{
return new Rectangle(color, x, y, height, width); ;
}
else if (shapeType.Equals("triangle"))
{
return new Triangle(color, x, y, side1, side2, side3);
}
else
{
return null;
}
}
}
}
//Compiler Class
if (code[0].Trim().ToLower().Equals("circle"))
{
try
{
int parameter1 = Int32.Parse(code[1]);
IShape shape = ShapeFactory.GetShape("circle", color, initX, initY, 0, 0, parameter1, 0, 0, 0);
outputWindow.Show();
//outputWindow.outputArea.Image=new ShapeFactory.GetShape("circle", color, initX, initY, 0, 0, parameter1, 0, 0, 0);
//outputWindow.outputArea.Image = shape;
output = "command executed successfully: parameter is" + parameter1;
//output = "is numeric ";
}
catch (Exception ex)
{
Console.WriteLine("Exception Message: " + ex.Message);
output = "\n Parameter Error : Invalid/Insufficient Parameter. \n";
}
}
Здесь, в классе компилятора, я хочу открыть окно вывода с помощью outputWindow.show();
, а затем нарисовать фигуру в окне с помощью outputWindow.OutputArea.Image=...
Я застрял. Пожалуйста, помогите.