共用方式為


ImageField 類別

輕量型物件,表示可以顯示影像 Decorator 或背景的圖形部分。

繼承階層架構

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 取得指派給圖案欄位的協助工具物件。 (繼承自 ShapeField)。
公用方法 GetAccessibleChild 取得子圖案欄位的協助工具物件。 (繼承自 ShapeField)。
公用方法 GetAccessibleChildCount 取得指派給父圖案欄位及其子圖案欄位的 Accessibility 物件的數目。 (繼承自 ShapeField)。
公用方法 GetAccessibleDefaultActionDescription 取得可存取物件之圖案欄位的預設用途。 (繼承自 ShapeField)。
公用方法 GetAccessibleDescription 傳回影像欄位的預設可存取描述。 (覆寫 ShapeField.GetAccessibleDescription(ShapeElement)。)
公用方法 GetAccessibleHelp 取得可存取的物件的圖案欄位說明。 (繼承自 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 的淺層複本 (Shallow Copy)。 (繼承自 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)。

回頁首

備註

當您定義圖案的一位影像 Decorator,,和,當您定義影像圖案,圖案顯示的區域由 ImageField 處理。 以 ImageFields ShapeFields 和其他的使用範例,請檢查 Dsl \ GeneratedCode \在您的 DSL 方案的 Shapes.cs。

ImageField 是處理圖形內的區域的物件,例如空間指派 Decorator。 一個 ImageField 執行個體共用相同圖案類別的許多圖案之間。 ImageField 執行個體不儲存每個圖案的個別影像:相反地, GetDisplayImage(ShapeElement) 方法採用圖案做為參數,並可搜尋圖案和其模型項目的目前狀態的影像相關。

如果您想要特殊行為 (例如變數的影像,您可以從 ImageField 衍生的類別。

建立 ImageField 子類別

  1. 將父圖案類別的 [產生雙衍生] 屬性會在您的 DSL 定義的。

  2. 覆寫您的圖案類別的 InitializeShapeFields 方法。

    • 在 DSL 建立專案的新程式碼檔,然後為圖案類別的部分類別定義。 覆寫方法定義於中。
  3. 檢查 InitializeShapeFields 程式碼在 DSL \ GeneratedCode \ Shapes.cs 的。

    在您的覆寫方法,請呼叫基底方法以建立自己的影像欄位的類別執行個體。 使用此取代 shapeFields 清單的規則影像欄位。

範例

這個範例在圖案的模型項目的狀態圖示會變更相依。

警告

這個範例示範如何動態影像 Decorator。但是,如果您只是要切換的兩個影像之間根據模型變數的狀態,可能是較簡單的建立數個影像 Decorator,找出它們在圖形中的位置,然後設定可視性篩選條件取決於模型變數的特定值。若要設定這個篩選條件,請選取在 DSL 定義中的圖形對應,開啟 DSL 詳細資料視窗,然後按一下 Decorator 選項。

使用最小的語言範本,若要執行此範例程式碼,請建立新的 DSL 方案。 將布林值網域屬性 AlternateState 加入至 ExampleElement 網域類別。 將圖示 Decorator 加入至 ExampleShape 類別,並將其儲存至點陣圖檔。 按一下 [轉換所有範本]。 將在 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;
      }
    }
  }
}

執行緒安全

這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。不保證任何執行個體成員是安全執行緒。

請參閱

參考

Microsoft.VisualStudio.Modeling.Diagrams 命名空間

TextField

ShapeField

InitializeShapeFields