建議使用 Visual Studio 2017

控制色彩、 線條樣式和其他圖形屬性

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

某些圖形屬性例如色彩可以 '公開' – 也就被連結至圖形的網域屬性。 其他人有直接控制。

某些圖形屬性,例如色彩可以連結至網域屬性的值。

在 DSL 定義中,選取圖形、 連接線或圖表類別。 其內容功能表上,選擇 [加入已公開,然後選擇您要填滿色彩等的屬性。

圖形現在具有您可以設定在程式碼或使用者的網域屬性。

通常您會想要讓公開的屬性相依於另一個屬性。 例如,您可能想小於零的圖形時的特定網域屬性會變成紅色。 若要讓此相依性,建立規則。 例如:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using Microsoft.VisualStudio.Modeling;  
using Microsoft.VisualStudio.Modeling.Diagrams;  
namespace ExampleNamespace  
{  
 // Attribute associates the rule with class:  
 [RuleOn(typeof(CarShape), FireTime = TimeToFire.TopLevelCommit)]  
 // The rule is a class derived from one of the abstract rules:  
 class CarShapeAddRule : AddRule  
 {  
 // Override the abstract method:  
 public override void ElementAdded(ElementAddedEventArgs e)  
 {  
 base.ElementAdded(e);  
 CarShape shape = e.ModelElement as CarShape;  
 Store store = shape.Store;  
 // Ignore this call if we're currently loading a model:  
 if (store.TransactionManager.CurrentTransaction.IsSerializing)   
  return;  
 Car car = shape.ModelElement as Car;  
 // Code here propagates change as required - for example:  
 shape.FillColor = car.Somebool ? System.Drawing.Color.Red : System.Drawing.Color.Green;   
 }  
}  
 // The rule must be registered:  
 public partial class ExampleDomainModel  
 {  
 protected override Type[] GetCustomDomainModelTypes()  
 {  
  List<Type> types = new List<Type>(base.GetCustomDomainModelTypes());  
  types.Add(typeof(CarShapeAddRule));  
  // If you add more rules, list them here.   
  return types.ToArray();  
 }  
 }  
}  

顯示: