您必须自己创建它。声明图形对象实现的接口。建议:
public interface IObject
{
bool HitTest(Point mouseLocation);
void Paint(Graphics g);
List<IAdorner> Adorners { get; }
}
public interface IAdorner
{
bool HitTest(Point mouseLocation);
void Paint(Graphics g);
void StartMoving(Point mouseLocation);
void Move(Point mouseLocation);
}
例如,装饰器是线条对象的可选端点。
您的主要绘画程序将如下所示:
private void drawingSurface_Paintobject sender, PaintEventArgs e)
{
foreach (IObject o in _objects) {
o.Paint(e.Graphics);
if (o == _selectedObject) {
foreach (IAdorner a in o.Adorners) {
a.Paint(e.Graphics);
}
}
}
}
当然,您需要所有鼠标事件处理。
这些接口足够抽象,可以实现任何形状。例如,它们不包含任何坐标,因为不同类型的对象需要不同数量和种类的坐标和参数。