[DEVEXPRESS/WINFORM] DiagramCommandsBase 클래스 : RegisterHotKeys 메소드를 사용해 단축 키(shortcut) 등록하기
DevExpress/WinForm 2020. 6. 3. 23:31728x90
반응형
728x170
▶ 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
반응형
그리드형(광고전용)
댓글을 달아 주세요