첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainForm.cs

using System.Drawing;
using System.IO;
using System.Windows.Input;

using DevExpress.Diagram.Core;
using DevExpress.Utils;
using DevExpress.XtraDiagram;
using DevExpress.XtraEditors;

namespace TestProject
{
    /// <summary>
    /// 메인 폼
    /// </summary>
    public partial class MainForm : XtraForm
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainForm()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            DiagramStencil diagramStencil = new DiagramStencil("SVGShape", "SVGShape");

            for(int i = 1; i < 6; i++)
            {
                string filePath = $"IMAGE\\chart{i}.svg";

                using(FileStream stream = File.OpenRead(filePath))
                {
                    ShapeDescription shapeDescription = ShapeDescription.CreateSvgShape
                    (
                        $"chart{i}",
                        $"chart{i}",
                        stream,
                        false,
                        (size) => new[] { new System.Windows.Point(size.Width / 2, size.Height / 2) },
                        "#ff0000",
                        "#000000"
                    );

                    diagramStencil.RegisterShape(shapeDescription);
                }
            }

            for(int i = 0; i < 5; i++)
            {
                int x = GetColumnIndex(5, i);
                int y = GetRowIndex(5, i);

                DiagramShape shape = new DiagramShape();

                shape.Size     = new SizeF(100f, 100f);
                shape.Position = new PointFloat(x * 150f + 100f, y * 150f + 100f);
                shape.Shape    = diagramStencil.GetShape($"chart{i + 1}");

                this.diagramControl.Items.Add(shape);
            }

            this.diagramControl.FitToDrawing();

            this.diagramControl.Commands.RegisterHotKeys
            (
                x => {
                
                    x.RegisterHotKey
                    (
                        Key.F10,
                        System.Windows.Input.ModifierKeys.None,
                        DiagramCommandsBase.ShowPrintPreviewCommand
                    );

                    x.ClearHotKeys(DiagramCommandsBase.SaveFileCommand);
                }
            );
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region 행 인덱스 구하기 - GetRowIndex(columnCount, sequenceIndex)

        /// <summary>
        /// 행 인덱스 구하기
        /// </summary>
        /// <param name="columnCount">컬럼 수</param>
        /// <param name="sequenceIndex">순번 인덱스</param>
        /// <returns>행 인덱스</returns>
        private int GetRowIndex(int columnCount, int sequenceIndex)
        {
            return sequenceIndex / columnCount;
        }

        #endregion
        #region 컬럼 인덱스 구하기 - GetColumnIndex(columnCount, sequenceIndex)

        /// <summary>
        /// 컬럼 인덱스 구하기
        /// </summary>
        /// <param name="columnCount">컬럼 수</param>
        /// <param name="sequenceIndex">순번 인덱스</param>
        /// <returns>컬럼 인덱스</returns>
        private int GetColumnIndex(int columnCount, int sequenceIndex)
        {
            return sequenceIndex % columnCount;
        }

        #endregion
    }
}
728x90
반응형
그리드형

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

[DEVEXPRESS/WINFORM] DiagramContainer 클래스 : Shape 속성을 사용해 컨테이너 도형 종류 설정하기  (0) 2020.06.04
[DEVEXPRESS/WINFORM] SplashScreenManager 클래스 : 커스텀 오버레이 폼 사용하기  (0) 2020.06.04
[DEVEXPRESS/WINFORM] GridOptionsView 클래스 : BestFitMaxRowCount 속성을 사용해 자동 컬럼 크기 적용 행 수 설정하기  (0) 2020.06.03
[DEVEXPRESS/WINFORM] GridOptionsNavigation 클래스 : AutoMoveRowFocus 속성을 사용해 다음 행으로 자동 포커스 이동 방지하기  (0) 2020.06.03
[DEVEXPRESS/WINFORM] GridOptionsClipboard 클래스 : CopyColumnHeaders 속성을 사용해 클립보드 복사시 컬럼 헤더 포함하기  (0) 2020.06.03
[DEVEXPRESS/WINFORM] DiagramCommandsBase 클래스 : RegisterHotKeys 메소드를 사용해 단축 키(shortcut) 등록하기  (0) 2020.06.03
[DEVEXPRESS/WINFORM] DiagramStencil 클래스 : 숨긴 스텐실 생성하기  (0) 2020.06.02
[DEVEXPRESS/WINFORM] DiagramStencil 클래스 : UnregisterShape 메소드를 사용해 도형 등록 취소하기  (0) 2020.06.02
[DEVEXPRESS/WINFORM] DiagramOptionsBehavior 클래스 : Stencils 속성을 사용해 특정 스텐실을 제외하고 모든 스텐실 제거하기  (0) 2020.06.02
[DEVEXPRESS/WINFORM] ShapeDescription 클래스 : CreateSvgShape 정적 메소드를 SVG 도형 생성하기  (0) 2020.06.02
[DEVEXPRESS/WINFORM] DiagramImage 클래스 : Image 속성을 사용해 이미지 도형 사용하기  (0) 2020.06.02
Posted by 사용자 icodebroker

댓글을 달아 주세요