Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用抽象工厂的图形编辑器_C#_Winforms_Design Patterns_Abstract Factory - Fatal编程技术网

C# 使用抽象工厂的图形编辑器

C# 使用抽象工厂的图形编辑器,c#,winforms,design-patterns,abstract-factory,C#,Winforms,Design Patterns,Abstract Factory,开发一个基本图形编辑器,用于使用相同形状的画笔在不同形状的画布上绘制,例如,在圆形画布上-圆形画笔(一个窗口形状可以有多个画布,每个画布都使用自己的画笔)。提供使用几种画布的可能性,例如圆形和矩形 到目前为止,我写了这段代码,但我不知道如何在这里实现画布和特定形状画笔的创建 // abstract class - brush abstract class Brush { public abstract void Move (); } // abstract class canvas ab

开发一个基本图形编辑器,用于使用相同形状的画笔在不同形状的画布上绘制,例如,在圆形画布上-圆形画笔(一个窗口形状可以有多个画布,每个画布都使用自己的画笔)。提供使用几种画布的可能性,例如圆形和矩形

到目前为止,我写了这段代码,但我不知道如何在这里实现画布和特定形状画笔的创建

// abstract class - brush
abstract class Brush
{
    public abstract void Move ();
}
// abstract class canvas
abstract class Canvas
{
    public abstract void Draw ();
}

// class round brush stroke
class RoundBrush: Brush
{
    public override void Move ()
    {
        // paint with a round brush
    }
}
// square brush stroke
class SquareBrush: Brush
{
    public override void Move ()
    {
        // Draw with a square brush
    }
}
// create a round canvas
class RoundForm: Canvas
{
    public override void Draw ()
    {
        // Draw a round canvas (pictureBox)
    }
}
// create a square canvas
class SquareForm: Canvas
{
    public override void Draw ()
    {
        // Draw a square canvas (pictureBox)
    }
}
// abstract factory class
abstract class EditorFactory
{
    public abstract Brush CreateBrush ();
    public abstract Canvas CreateCanvas ();
}
// Factory to create a round canvas with a round brush
class RoundFactory: EditorFactory
{
    public override Brush CreateBrush ()
    {
        return new RoundBrush ();
    }

    public override Canvas CreateCanvas ()
    {
        return new RoundForm ();
    }
}
// Factory to create a square canvas with a square brush
class SquareFactory: EditorFactory
{
    public override Brush CreateBrush ()
    {
        return new SquareBrush ();
    }
    public override Canvas CreateCanvas ()
    {
        return new SquareForm ();
    }
}
// client
class Editor
{
    private Brush brush;
    private Canvas canvas;
    public Editor (EditorFactory factory)
    {
        brush = factory.CreateBrush ();
        canvas = factory.CreateCanvas ();
    }
    public void Move ()
    {
        brush.Move ();
    }
    public void Draw ()
    {
        canvas.Draw ();
    }
}


private void Form1_Shown (object sender, EventArgs e)
{

    Editor newEditor = new Editor (new RoundFactory ());
    newEditor.Move ();
    newEditor.Draw ();

    Editor editor = new Editor (new SquareFactory ());
    editor.Move ();
    editor.Draw ();
}
a) 这里的帖子似乎太宽了。b) 我真的不明白这里的“画布”是什么意思。c) 最终,您必须了解winforms中图形的可能性,更重要的是了解winforms中图形的限制。。