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中图形的限制。。