ImageField 类

轻型对象表现部分能显示图像修饰器或背景的形状。

继承层次结构

System.Object
  Microsoft.VisualStudio.Modeling.Diagrams.ShapeField
    Microsoft.VisualStudio.Modeling.Diagrams.ImageField

命名空间:  Microsoft.VisualStudio.Modeling.Diagrams
程序集:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0(在 Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll 中)

语法

声明
Public Class ImageField _
    Inherits ShapeField
public class ImageField : ShapeField

ImageField 类型公开以下成员。

构造函数

  名称 说明
公共方法 ImageField(String) 初始化 ImageField 类的新实例。
公共方法 ImageField(String, Image) 初始化 ImageField 类的新实例。

页首

属性

  名称 说明
公共属性 AnchoringBehavior 描述该字段的内容应该如何放置和调整有关父 ShapeElement 大小。 (继承自 ShapeField。)
公共属性 DefaultAccessibleDescription 获取或设置默认可访问说明。 (继承自 ShapeField。)
公共属性 DefaultAccessibleName 获取或设置可访问对象的形状字段的默认名称。 (继承自 ShapeField。)
公共属性 DefaultAccessibleState 为可访问对象获取形状字段的默认状态。 (继承自 ShapeField。)
公共属性 DefaultBackgroundBrushId 获取或设置用于绘制形状字段的背景的默认画笔的 ID。 (继承自 ShapeField。)
公共属性 DefaultFocusable 获取形状字段并验证它是否可以接收焦点,或者对形状字段提供接收焦点的功能。 (继承自 ShapeField。)
公共属性 DefaultImage 获取或设置与此 ImageField 关联的默认图像。默认图像可以通过重写 GetDisplayImage 方法自定义默认图像。
公共属性 DefaultInactiveSelectedBackgroundBrushId 获取或设置形状字段的默认背景画笔的 ID。 (继承自 ShapeField。)
公共属性 DefaultPenId 获取或设置用于形状字段的默认钢笔的 ID。 (继承自 ShapeField。)
公共属性 DefaultReflectParentFocusedState 获取子形状字段,并确认在其父形状接收焦点或将功能设置为反射其父形状的焦点状态时,它是否应接收焦点。 (继承自 ShapeField。)
公共属性 DefaultReflectParentSelectedState 获取子形状字段,并确认在选中其父形状或将功能设置为反射其父形状的选中状态时,是否应选中它。 (继承自 ShapeField。)
公共属性 DefaultSelectable 获取形状字段并验证是否选择默认情况下或设置形状字段的默认选择状态。 (继承自 ShapeField。)
公共属性 DefaultSelectedBackgroundBrushId 获取或设置形状字段的默认背景画笔的 ID。 (继承自 ShapeField。)
公共属性 DefaultUnscaled 获取或设置是否应绘制使用有关此字段的绑定取消缩放的图像或是否应缩放图像以适合绑定。
公共属性 DefaultVisibility 获取形状字段并验证是否默认情况下显示或设置形状字段的默认可见性。 (继承自 ShapeField。)
公共属性 Name 获取形状字段的名称。 (继承自 ShapeField。)

页首

方法

  名称 说明
公共方法 AccessibleDoDefaultAction 执行该辅助性对象的默认操作。 (继承自 ShapeField。)
公共方法 AllowInPlaceEditorAutoSize 使在位编辑器自动调整到形状字段的大小。 (继承自 ShapeField。)
公共方法 AssociateValueWith(Store, AssociatedPropertyInfo) 将形状字段与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateValueWith(Store, Guid) 将形状字段与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateValueWith(Store, Guid, AssociatedPropertyInfo) 将形状字段与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateVisibilityWith(Store, AssociatedPropertyInfo) 将形状字段的可见性与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateVisibilityWith(Store, Guid) 将形状字段的可见性与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateVisibilityWith(Store, Guid, AssociatedPropertyInfo) 将形状字段的可见性与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 CanEditValue 获取形状字段并验证它是否可以编辑。 (继承自 ShapeField。)
公共方法 CommitPendingEdit 提交挂起的编辑。 (继承自 ShapeField。)
公共方法 DoHitTest 在关系图上指定的点执行命中测试以确定点是否位于形状字段的边界。 (继承自 ShapeField。)
公共方法 DoKeyboardNavigation 在形状段用此键盘导航。 (继承自 ShapeField。)
公共方法 DoPaint 写入 ShapeField 的内容。 (重写 ShapeField.DoPaint(DiagramPaintEventArgs, ShapeElement)。)
公共方法 EditValue(ShapeElement, DiagramClientView) 打开形状字段的内置编辑器。 (继承自 ShapeField。)
公共方法 EditValue(ShapeElement, DiagramClientView, PointD) 打开形状字段的内置编辑器。 (继承自 ShapeField。)
公共方法 Equals 确定指定的对象是否等于当前对象。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 FindFirstChild 找到在父形状字段中的第一个子形状字段。 (继承自 ShapeField。)
公共方法 FindLastChild 找到在父形状字段中的最后一个子形状字段。 (继承自 ShapeField。)
公共方法 FindNextChild 找到在父形状字段中的下一个子形状字段。 (继承自 ShapeField。)
公共方法 FindNextInChildSubFields 找到在导航序列中的下一个子形状字段。 (继承自 ShapeField。)
公共方法 FindPreviousChild 找到在父形状字段中的上一个子形状字段。 (继承自 ShapeField。)
公共方法 FindPreviousInChildSubFields 找到在导航序列中的上一个子形状字段。 (继承自 ShapeField。)
公共方法 Focused 获取形状字段并验证是否具有焦点。 (继承自 ShapeField。)
公共方法 GetAccessibilityObject 获取分配给形状字段的 accessibility 对象。 (继承自 ShapeField。)
公共方法 GetAccessibleChild 获取子形状字段的 Accessibility 对象。 (继承自 ShapeField。)
公共方法 GetAccessibleChildCount 获取分配给父级形状字段和子形状字段的辅助功能对象的数目。 (继承自 ShapeField。)
公共方法 GetAccessibleDefaultActionDescription 为可访问对象获取形状字段的默认用途。 (继承自 ShapeField。)
公共方法 GetAccessibleDescription 返回图像字段的默认辅助性说明。 (重写 ShapeField.GetAccessibleDescription(ShapeElement)。)
公共方法 GetAccessibleHelp 获取辅助性对象的形状字段 Help。 (继承自 ShapeField。)
公共方法 GetAccessibleHelpTopicFileName 为可访问的对象在“帮助”中获取主题。 (继承自 ShapeField。)
公共方法 GetAccessibleHelpTopicId 获取可访问对象的帮助主题 ID。 (继承自 ShapeField。)
公共方法 GetAccessibleName 返回图像字段的默认辅助性名称。 (重写 ShapeField.GetAccessibleName(ShapeElement)。)
公共方法 GetAccessibleRole 检索此 ShapeField 的辅助性角色。 (重写 ShapeField.GetAccessibleRole(ShapeElement)。)
公共方法 GetAccessibleState 获取用于可访问对象的形状字段的状态。 (继承自 ShapeField。)
公共方法 GetAccessibleValue 获取可访问对象的形状字段中的值。 (继承自 ShapeField。)
公共方法 GetActiveInPlaceEditor 获取活动的就地编辑。 (继承自 ShapeField。)
公共方法 GetBackgroundBrush 获取将绘制此形状字段将分配到的形状元素的背景的画笔。 (继承自 ShapeField。)
公共方法 GetBackgroundBrushId 获取一个画笔 ID,该画笔被用来绘制当前形状被分配到的形状的背景。 (继承自 ShapeField。)
公共方法 GetBounds 获取形状字段的边界。 (继承自 ShapeField。)
公共方法 GetCursor 获取当鼠标指向形状字段时显示的指针。 (继承自 ShapeField。)
公共方法 GetDisplayImage 获取由此字段显示的图像。
公共方法 GetFocusable 获取形状字段并验证它是否可以接收该焦点。 (继承自 ShapeField。)
公共方法 GetHashCode 作为默认哈希函数。 (继承自 Object。)
公共方法 GetInPlaceEditorBounds 获取就绪编辑器的边界。 (继承自 ShapeField。)
公共方法 GetMaximumInPlaceEditorSize 获取就地编辑的最大边界。 (继承自 ShapeField。)
公共方法 GetMinimumInPlaceEditorSize 获取就地编辑的最大边界。 (继承自 ShapeField。)
公共方法 GetMinimumSize 返回 ImageField的最小大小。 (重写 ShapeField.GetMinimumSize(ShapeElement)。)
公共方法 GetPen 获取用于绘制形状字段被分配到的形状元素的钢笔。 (继承自 ShapeField。)
公共方法 GetPenId 获取形状字段被指定到的形状要素的笔 ID 。 (继承自 ShapeField。)
公共方法 GetPotentialMouseAction 在用户接下来单击关系图上特定点时,获取引起该事件的鼠标操作并将其激活。 (继承自 ShapeField。)
公共方法 GetSelectable 获取形状字段并验证它是否可以选择。 (继承自 ShapeField。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
公共方法 GetUnscaled 获取按钮图像是否应未缩放绘制。
公共方法 GetValue 获取形状字段中的值。 (继承自 ShapeField。)
公共方法 GetValueDomainPropertyInfo 获取向形状字段中的值赋予的域属性。 (继承自 ShapeField。)
公共方法 GetVisible 获取形状字段并验证是否显示。 (继承自 ShapeField。)
公共方法 HasFocusedAppearance 获取形状字段并验证它是否应显示一个具有焦点。 (继承自 ShapeField。)
公共方法 HasPendingEdit 获取形状字段并验证就地编辑是否处于活动状态并更改挂起。 (继承自 ShapeField。)
公共方法 HasSelectedAppearance 获取形状字段并验证是否显示选中。 (继承自 ShapeField。)
公共方法 IsNavigationKey(Char) 获取用户按下的键并验证它是否可用于形状之间字段的导航。 (继承自 ShapeField。)
公共方法 IsNavigationKey(Keys) 获取用户按下的按键组合并验证它们是否可用于形状之间字段的导航。 (继承自 ShapeField。)
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法 NavigateAscend 移动焦点至用于选定形状的导航序列的上一个形状字段。 (继承自 ShapeField。)
公共方法 NavigateDescend 移动焦点至用于选定形状的导航序列的下一个形状字段。 (继承自 ShapeField。)
公共方法 NavigateToFirst 移动焦点至用于选定形状的导航序列的第一个形状字段。 (继承自 ShapeField。)
公共方法 NavigateToLast 移动 焦点至用于选定形状的导航序列的最后的形状字段。 (继承自 ShapeField。)
公共方法 NavigateToNext 移动焦点至用于选定形状的导航序列的下一个形状字段。 (继承自 ShapeField。)
公共方法 NavigateToPrevious 移动焦点至用于选定形状的导航序列的上一个形状字段。 (继承自 ShapeField。)
受保护的方法 OnBeginEdit 当就地编辑启动时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnClick 当用户单击形状字段时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnDoubleClick 当用户双击形状字段时,警报侦听器。 (继承自 ShapeField。)
受保护的方法 OnEndEdit 当就地编辑完成时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnKeyDown 当指向形状字段,用户按住了密钥时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnKeyPress 当指向形状字段,用户按住密钥时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnKeyUp 当指向形状字段,用户释放了密钥时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnMouseDown 用户按住鼠标按钮到形状字段上时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnMouseMove 鼠标移动到形状字段上时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnMouseUp 用户释放鼠标按钮到形状字段上时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnMouseWheel 鼠标旋转到形状字段上时,警报侦听器。 (继承自 ShapeField。)
公共方法 Selected 获取形状字段并验证它是否已选中。 (继承自 ShapeField。)
公共方法 SetSelectionRange 设置该选择到子形状字段的范围。 (继承自 ShapeField。)
公共方法 SetValue 将指定的参数赋予形状字段。 (继承自 ShapeField。)
公共方法 SetVisible 设置形状字段的可见性。 (继承自 ShapeField。)
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

备注

当定义形状的一个图像修饰器,并且,在中,定义图像形状,形状显示的区域。ImageField 管理。 有关 ImageFields 和其他 ShapeFields 的初始化的示例,请检查 Dsl\GeneratedCode\Shapes.cs in your DSL 解决方案。

ImageField 是在管理形状内的区域的对象,例如空间分配给装饰器。 一 ImageField 实例共享在同一形状类的多个形状之间。 ImageField 实例不存储每个形状不同的图像:相反,GetDisplayImage(ShapeElement) 方法将形状用作参数,并可以查阅形状及其模型元素的当前状态的图像依赖项。

如果需要特殊行为 (如变量的图像,可以创建从 ImageField 派生的您自己的类。

创建 ImageField 子类

  1. 设置属性 生成派生的双重 在 DSL 父形状定义的类。

  2. 重写类形状的 InitializeShapeFields 方法。

    • 创建在 DSL 项目的代码文件,然后编写类形状的分部类定义。 重写方法以定义即可。
  3. 检查 InitializeShapeFields 代码位于 DSL\GeneratedCode\Shapes .cs 的。

    在重写方法,调用基方法创建自己的图像类实例字段。 使用备用列表 shapeFields 的常规映像字段。

示例

此示例对形状的模型元素的状态进行图标更改依赖项。

警告

此示例演示如何使动态的图像修饰器。但是,如果您只希望切换两个图像之间根据模型变量的可用性,较为简单的创建多种图像修饰器,找到将在形状相同的位置,再设置可见性筛选器根据模型变量的特定值。设置此筛选器,选择在 DSL 定义的形状,DSL 打开映射详细信息窗口并单击修饰器选项卡。

使用最小的语言模板,若要运行此代码示例,请创建新 DSL 的解决方案。 将布尔域属性 AlternateState 到 ExampleElement 域类。 将图标添加修饰器。ExampleShape 类,并将其添加到图像位图文件。 Click “转换所有模板”。 DSL 添加到项目的代码文件,并粘贴下面的代码。

若要测试您的代码,请按 F5,另外,在调试解决方案,打开示例关系图。 图标的默认状态应显示。 选择形状并在属性窗口,更改值 AlternateState 属性。 该图标应显示旋转 90 度,然后通过对该形状。

using Microsoft.VisualStudio.Modeling;
using Microsoft.VisualStudio.Modeling.Diagrams;
...
partial class ExampleShape
{
    /// <summary>
    /// Compose a list of the fields in this shape.
    /// Called once for each shape class.
    /// </summary>
    /// <param name="shapeFields"></param>
    protected override void InitializeShapeFields(IList<ShapeField> shapeFields)
    {
      // Fields set up according to DSL Definition:
      base.InitializeShapeFields(shapeFields);

      // Replace the image field:
      ShapeField oldField = ShapeElement.FindShapeField(shapeFields, "IconDecorator");
      shapeFields.Remove(oldField);
      // Must keep the same name:
      MyImageField newField = new MyImageField(oldField.Name);
      shapeFields.Add(newField);
      newField.DefaultImage = (oldField as ImageField).DefaultImage.Clone() as System.Drawing.Image;
    }
  }


  public class MyImageField : ImageField
  {
    public MyImageField(string tag) : base(tag) { }

    /// <summary>
    /// Get the image for this field in the given shape.
    /// </summary>
    public override System.Drawing.Image GetDisplayImage(ShapeElement parentShape)
    {
      ExampleElement element = parentShape.ModelElement as ExampleElement;
      if (element.AlternateState == true)
        return AlternateImage;
      else
        return base.GetDisplayImage(parentShape);
    }

    private System.Drawing.Image alternateImage;
    public System.Drawing.Image AlternateImage
    {
      get
      {
        if (alternateImage == null)
        {
          // Alternate image is a copy of the default, rotated by 90 degrees:
          alternateImage = this.DefaultImage.Clone() as System.Drawing.Image;
          alternateImage.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone);
        }
        return alternateImage;
      }
    }
  }
}

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参阅

参考

Microsoft.VisualStudio.Modeling.Diagrams 命名空间

TextField

ShapeField

InitializeShapeFields