65.9K
CodeProject 正在变化。 阅读更多。
Home

Visual Drawing.Net

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.84/5 (62投票s)

2013 年 2 月 13 日

LGPL3

8分钟阅读

viewsIcon

86391

downloadIcon

5712

创建与 .NET 应用程序和 Visual Studio 2005/2008/2010/20012 以及所有相关的 Express Editions 集成的迷人形状

引言

多年前,当 Microsoft .NET 新发布时,我正在一家公司担任软件顾问,负责帮助客户快速启动 .NET 开发,并以精简和结构化的方式教授他们新的 .NET 编程语言 C# 和 Visual Basic .NET。我协助的大多数开发人员都是 Visual Basic 6.0 开发人员,他们中的许多人对面向对象编程和设计不是很熟悉。我需要找到解释 OOP 的最佳方式。因此,教授 OOP 的最佳示例是使用一个具有虚拟 Draw 方法的基 Shape 类,并用 OOP 的所有方面装饰这个 Shape 类。除此之外,我还向他们教授 Visual Studio .NET 的设计时功能。在这些研讨会完成后,世界上的每个人都学会了 .NET,我身边有很多形状;我决定用它们做一些有用的事情,这也许对其他人也有用。因此,我开发了一个形状开发工具和一个与 Visual Studio .NET 集成的开发环境。

2004 年我在德国的各种公司担任软件架构师后,我的工作生活中有更多的责任,我完全忘记了我开发了这个工具。直到最近,当我在查看我的文件存档时,我再次看到了它。我现在已经刷新并更新了它,使其也适用于更新版本的 Visual Studio .NET,包括 Visual Studio 2008、2010 和 2012。我希望你会喜欢它。它是免费的,你可以在 http://visualdrawingdotnet.codeplex.com 下载完整的源代码,并在 www.erdalhalici.com 找到文档。

注意:我开发 Visual Drawing.Net 只是为了好玩,这意味着它没有完全文档化。但我尽力了。我会在有时间的时候继续添加文档。

图 1

图 2

图 3

背景

Visual Drawing.Net 是一个形状开发工具,提供了一个与 Visual Studio .NET 2005/2008/2010/20012 及所有相关 Express 版本集成的开发环境。

Visual Drawing.Net 加快了基于矢量图形的图形应用程序的开发。所有使用 Visual Drawing.Net 创建的形状都是可编程的,它们的属性和特性可以在包含应用程序的运行时随时更改。形状是使用面向对象编程范式设计的,支持 Visual Studio .NET 2005/2008/2010/2012 及所有 Express 版本开发环境中的可视化继承。

Visual Drawing.Net 是一个基于形状的绘图工具,它提供了大量内置形状,开发人员可以将其拖放到绘图表面以创建绘图;Visual Studio .NET 也有许多第三方工具可用。然而,有时,当没有内置或第三方形状可以解决特定的绘图问题时,形状开发人员必须创建具有特定外观或以某种方式随时行为的自定义形状。一旦创建,自定义形状就会成为可重用组件,可以在应用程序中使用或编译成形状库以在应用程序中使用。使用可编程形状的能力是 Visual Drawing.Net 成为如此强大的绘图工具的特征之一。

开发一个形状涉及创建形状的几何形状,并指定和实现其行为。通过选择几何形状和行为的正确组合,形状开发人员可以创建模仿其所代表的现实世界对象的形状。形状几何形状是指形状的外观,由形状的线条、角度和格式组成,以及形状是否旋转。它还包括形状的结构方式。例如,它是一个简单的形状还是一个将几个简单形状组合在一起的形状容器。您可以使用设计视图中的 Visual Drawing.Net 绘制形状来创建形状几何形状。您还可以通过在代码视图中编写代码来创建或扩展形状几何形状。

为什么要使用 Visual Drawing.Net?

使用 Visual Drawing.Net 开发形状的一些原因如下

  • Visual Drawing.Net 是一个为设计和开发图形应用程序的开发人员提供的开发和生产力工具。它提供了一个与 Visual Studio .NET 2003 和 Visual Studio .NET 2005 以及所有 Express 版本集成的自定义工作环境,以便更轻松地指定、创建、构建、测试和维护形状。
  • 形状是可扩展的。您可以通过重写 shape 方法 MakePath 来创建自己的形状,一旦创建了 Shape,就可以在 Shape 容器中使用它。Shape 容器将为您的 shape 提供设计时支持,以进行旋转、倾斜、移动、变形、着色、填充颜色或使用画笔等操作。
  • Visual Drawing.Net 在新开发的形状中提供了一致性。您可以在 Shape 容器中以各种方式实现相同的行为(例如,在所有 Visual Studio .NET 和 Express 版本中使用可视化继承)。使用 Visual Drawing.Net,行为每次都以相同的方式应用。
  • Visual Drawing.Net 将形状存储在 Shape 容器中,它也是一个 Shape 对象,以及您使用任何 .NET 支持的编程语言(C#、VB.NET 等)独立创建的形状的所有属性和行为,这使得设计师、开发人员和测试人员团队可以协作工作,或者由不同的团队或公司处理形状创建的不同方面。

何时使用 Visual Drawing.NET?

当您想执行以下任何操作时,请使用 Visual Drawing.Net

  • 创建具有复杂属性和行为的可编程形状,例如多状态形状。
  • 创建属于相似形状层次结构或具有微小变化的形状集的形状。
  • 创建形状库并长期维护它们,包括同时更改多个形状。
  • 能够测试您开发的形状,以确保它们正确实现了指定的行为。
  • 作为形状开发团队的一部分创建形状,该团队将工作分配给形状设计师、开发人员和测试人员,或将形状开发过程的部分外包给其他组织。
  • 独立存储形状信息,而不是在使用形状的应用程序中。

设置您的开发环境

请按照以下步骤设置您的 Visual Studio .NET 开发环境

  • 创建一个新的 C# 或 VB.NET 项目。
  • 在您的项目中添加对 Camalon.Drawing.dllCamalon.ColorPicker.dllCamalon.Drawing.Design.dll 的引用。
  • 在您的项目中添加一个新的 ShapeContainer

    注意:您可以不添加,而是在您的项目中添加一个新的组件,然后按照如下所示从 Camalon.Drawing.ShapeContainer 类继承它。这样,所有 Shape Container Designer 所需的代码都将自动生成。

    1. 解决方案资源管理器中,选择一个目标项目并在您的项目中添加一个新类。
    2. 让您新添加的类从 Camalon.Drawing.ShapeContainer继承,并添加设计器所需的 InitializeComponent 方法,如下所述
[System.ComponentModel.ToolboxItem(true)]
public class MyShapeContainer:Camalon.Drawing.ShapeContainer
{
     public MyShapeContainer()
      {
        //This call is required by the Shape Container Designer
           InitializeComponent();
      }
 
      //Required method for Designer support - do not modify
    //the contents of this method with the code editor.
     private void InitializeComponent()
     {
     }
}
<System.ComponentModel.ToolboxItem(True)> _
Public Class MyShapeContainer Inherits Camalon.Drawing.ShapeContainer
 
    Public Sub New()
 
        'This call is required by the Shape Container Designer
         InitializeComponent()
 
    End Sub

    'Required method for Designer support - do not modify
     'the contents of this method with the code editor.
     Private Sub InitializeComponent()
 
    End Sub
 
End Class
  • Toolbox 添加一个自定义选项卡
    1. 右键单击工具箱中任何现有选项卡,然后从其快捷菜单中选择添加选项卡。新选项卡出现在工具箱窗口底部,并自动添加指针工具。
    2. 工具箱底部的文本框中,输入新选项卡的名称,然后按 ENTER

      注意:如果您的工具箱中已有要使用的自定义选项卡,请忽略此步骤。

  • 在您的 Toolbox 选项卡上添加形状和形状装饰器(ShapeBrushShapePen 等)
    1. 工具菜单上,选择添加/移除工具箱项

      自定义工具箱对话框打开。

    2. 自定义工具箱对话框中,逐个选项卡单击以浏览工具箱项的可用类别。
    3. 单击浏览以添加当前列表中没有的形状和绘图工具。为此,请找到 Camalon.Drawing.dll

    4. 单击确定关闭自定义工具箱对话框。形状和绘图工具将添加到工具箱中当前选定的选项卡。从那里,您可以在您的 Shape 容器中拖放形状和绘图工具。

在 Windows 窗体中添加您自己的形状

为了能够在窗体中添加您自己的形状和形状容器,您需要使用 ShapeControlShapeControl 使您能够轻松地在 Windows 窗体对象中使用和修改您预定义的形状和形状容器。一个 shape 控件只能包含一个形状,并为附加形状提供设计时支持,与 Shape Container Designer 上的形状相同。

上图 1 展示了形状容器中的形状集合,它们构成了一个菱形。在图 2 中,菱形与 ShapeControl 对象一起添加到 Windows 窗体中,并且具有 SandyBrown 背景颜色。

图 4

ShapeControl 继承自 Control 类。在设计时,当一个基于 Shape 的对象从 ToolBox 添加到继承自 ContainerControl 的对象时,一个新的 ShapeControl 也将为这个 Shape 创建并添加到容器控件以显示 shape。您可以在 shape 控件上进行变换(旋转倾斜缩放扭曲)、重新定位、调整大小、填充等操作,方式与您在设计时在 shape 容器中修改 shape 的方式相同。

您可以使用 Visual Studio IDE 中的布局工具栏对 shape 控件中的 shape 进行对齐。在这种情况下,形状的所有对齐命令都相对于 shape 控件。例如;当您单击“设为相同大小”命令时,形状将与形状控件的大小相同。ShapeControl 为形状提供与 Shape Container Designer 相同的设计时功能。

图 5

ScalingResize 属性允许您指定 ShapeControl 的调整大小模式。如果此属性设置为 true,则形状控件中的 shape 将被锁定,并且在 ShapeControl 调整大小时仅进行缩放(全局)。此变换应用于形状的所有绘图属性,例如 ShapePenShapeBrush 等。默认情况下,此属性设置为 false

使用 Shape 属性,您可以指定要在 ShapeControl 对象上绘制的 shape

© . All rights reserved.