첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
다운로드

▶ 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
반응형
그리드형(광고전용)

'DevExpress > WinForm' 카테고리의 다른 글

[DEVEXPRESS/WINFORM] ArcScaleComponent 클래스 : StartAngle/EndAngle/Value 속성을 사용해 범위 막대(Range Bar)와 현재 값 표시하기  (0) 2020.06.08
[DEVEXPRESS/WINFORM] DiagramControl 클래스 : CustomGetEditableItemProperties 이벤트를 사용해 속성 패널에서 속성 제거하기  (0) 2020.06.07
[DEVEXPRESS/WINFORM] DiagramControl 클래스 : CustomGetEditableItemProperties 이벤트를 사용해 속성 패널에 바인딩 데이터 소스 속성 추가하기  (0) 2020.06.07
[DEVEXPRESS/WINFORM] DiagramControl 클래스 : CustomGetEditableItemProperties 이벤트를 사용해 속성 패널에 파생 도형 속성 추가하기  (0) 2020.06.07
[DEVEXPRESS/WINFORM] DiagramControl 클래스 : CustomGetEditableItemProperties 이벤트를 사용해 속성 패널에 속성 추가하기  (0) 2020.06.07
[DEVEXPRESS/WINFORM] DiagramControl 클래스 : 커스텀 다이어그램 컨테이너 생성하기  (0) 2020.06.07
[DEVEXPRESS/WINFORM] DiagramControl 클래스 : 파생 도형 생성하기/직렬화 하기  (0) 2020.06.07
[DEVEXPRESS/WINFORM] DiagramControl 클래스 : CustomDrawItem 이벤트를 사용해 다이어그램 항목 내 커스텀 아이콘 그리기  (0) 2020.06.07
[DEVEXPRESS/WINFORM] ImageResourceCache 클래스 : GetImage 메소드를 사용해 DEVEXPRESS 이미지 구하기  (0) 2020.06.07
[DEVEXPRESS/WINFORM] DiagramControl 클래스 : 커스텀 그래프 레이아웃 알고리즘 사용하기  (0) 2020.06.07
Posted by icodebroker

댓글을 달아 주세요