[DEVEXPRESS/WINFORM] DiagramStencil 클래스 : RegisterTool 메소드를 사용해 스텐실에 커스텀 다이어그램 항목 추가하기
DevExpress/WinForm 2020. 6. 7. 19:41728x90
반응형
728x170
▶ Status.cs
namespace TestProject
{
/// <summary>
/// 상태
/// </summary>
public enum Status
{
/// <summary>
/// 활성
/// </summary>
Active,
/// <summary>
/// 비활성
/// </summary>
Inactive
}
}
728x90
▶ CustomDiagramShape.cs
using System.ComponentModel;
using DevExpress.Utils.Serializing;
using DevExpress.XtraDiagram;
namespace TestProject
{
/// <summary>
/// 커스텀 다이어그램 도형
/// </summary>
public class CustomDiagramShape : DiagramShape
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 상태 - Status
/// <summary>
/// 상태
/// </summary>
[Category("Info")]
[XtraSerializableProperty]
public Status Status { get; set; }
#endregion
}
}
300x250
▶ MainForm.cs
using System.Drawing;
using DevExpress.Diagram.Core;
using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraDiagram;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : XtraForm
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
DiagramControl.ItemTypeRegistrator.Register(typeof(CustomDiagramShape));
DiagramStencil stencil = new DiagramStencil("customShapes", "Custom Shapes");
stencil.RegisterTool
(
new FactoryItemTool
(
"activeTaskShape",
() => "Active Task",
diagram => new CustomDiagramShape { Content = "Active Task", Status = Status.Active },
new System.Windows.Size(150, 100),
false
)
);
stencil.RegisterTool
(
new FactoryItemTool
(
"inactiveTaskShape",
() => "Inactive Task",
diagram => new CustomDiagramShape { Content = "Inactive Task", Status = Status.Inactive },
new System.Windows.Size(150, 100),
false
)
);
DiagramToolboxRegistrator.RegisterStencil(stencil);
this.diagramControl.OptionsBehavior.SelectedStencils = StencilCollection.Parse("customShapes");
CustomDiagramShape shape = new CustomDiagramShape();
shape.Size = new SizeF(100F, 100F);
shape.Position = new PointFloat(300f, 300f);
shape.Appearance.BorderSize = 4;
shape.Appearance.BorderColor = Color.FromArgb(128, 0, 0, 0);
shape.Appearance.BackColor = Color.White;
shape.Appearance.Font = new Font("나눔고딕코딩", 12f, FontStyle.Bold);
shape.Appearance.ForeColor = Color.FromArgb(128, 0, 0, 0);
shape.Content = "도형";
shape.Status = Status.Active;
this.diagramControl.Items.Add(shape);
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요