[DEVEXPRESS/WINFORM] XtraTabbedMdiManager 클래스 : MDI 자식 폼 썸네일 표시하기
DevExpress/WinForm 2020. 6. 5. 23:36728x90
반응형
728x170
▶ ControlHelper.cs
using System.Drawing;
using System.Windows.Forms;
namespace TestProject
{
/// <summary>
/// 컨트롤 헬퍼
/// </summary>
public static class ControlHelper
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Public
#region 비트맵 구하기 - GetBitmap(sourceControl, targetSize)
/// <summary>
/// 비트맵 구하기
/// </summary>
/// <param name="sourceControl">소스 컨트롤</param>
/// <param name="targetSize">타겟 크기</param>
/// <returns>비트맵</returns>
public static Bitmap GetBitmap(Control sourceControl, Size targetSize)
{
Size formSize = sourceControl.Size;
Rectangle rectangle = new Rectangle(new Point(0, 0), formSize);
Bitmap sourceBitmap = new Bitmap(formSize.Width, formSize.Height);
sourceControl.DrawToBitmap(sourceBitmap, rectangle);
Bitmap targetBitmap = new Bitmap(targetSize.Width, targetSize.Height);
Graphics targetGraphics = Graphics.FromImage(targetBitmap);
rectangle.Size = targetSize;
targetGraphics.DrawImage(sourceBitmap, rectangle);
return targetBitmap;
}
#endregion
}
}
728x90
▶ ThumbnailHelper.cs
using System.Drawing;
using System.Windows.Forms;
using DevExpress.Utils;
using DevExpress.XtraTab;
using DevExpress.XtraTab.ViewInfo;
using DevExpress.XtraTabbedMdi;
namespace TestProject
{
/// <summary>
/// 썸네일 헬퍼
/// </summary>
public class ThumbnailHelper
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// XTRA 탭 MDI 관리자
/// </summary>
private XtraTabbedMdiManager manager;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - ThumbnailHelper(manager)
/// <summary>
/// 생성자
/// </summary>
/// <param name="manager">XTRA 탭 MDI 관리자</param>
public ThumbnailHelper(XtraTabbedMdiManager manager)
{
this.manager = manager;
this.manager.MouseMove += xtraTabbedMdiManager_MouseMove;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region XTRA 탭 MDI 관리자 마우스 이동시 처리하기 - xtraTabbedMdiManager_MouseMove(sender, e)
/// <summary>
/// XTRA 탭 MDI 관리자 마우스 이동시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void xtraTabbedMdiManager_MouseMove(object sender, MouseEventArgs e)
{
BaseTabHitInfo hitInfo = this.manager.CalcHitInfo(e.Location);
if(hitInfo.HitTest == XtraTabHitTest.PageHeader)
{
ShowHint(hitInfo.Page);
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region 힌트 보여주기 - ShowHint(page)
/// <summary>
/// 힌트 보여주기
/// </summary>
/// <param name="page">XTRA 탭 페이지 인터페이스</param>
private void ShowHint(IXtraTabPage page)
{
ToolTipItem toolTipItem = new ToolTipItem();
toolTipItem.Image = ControlHelper.GetBitmap((page as XtraMdiTabPage).MdiChild, new Size(200, 200));
SuperToolTip superToolTip = new SuperToolTip();
superToolTip.Items.AddTitle(page.Text);
superToolTip.Items.AddSeparator();
superToolTip.Items.Add(toolTipItem);
ToolTipControlInfo toolTipControlInfo = new ToolTipControlInfo();
toolTipControlInfo.ToolTipType = ToolTipType.SuperTip;
toolTipControlInfo.Interval = 500;
toolTipControlInfo.Object = page;
toolTipControlInfo.SuperTip = superToolTip;
ToolTipController.DefaultController.ShowHint(toolTipControlInfo);
}
#endregion
}
}
300x250
▶ MainForm.cs
using System;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraEditors;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : XtraForm
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 난수기
/// </summary>
private Random random = new Random();
/// <summary>
/// 썸네일 힌트 헬퍼
/// </summary>
private ThumbnailHelper helper;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
for(int i = 0; i < 10; i++)
{
Form form = new Form();
form.Size = new Size(600, 600);
form.MdiParent = this;
form.Text = string.Format("Form {0}", i);
form.BackColor = GetRandomColor();
SimpleButton button = new SimpleButton();
button.Parent = form;
button.Location = new Point(button.Width * i, button.Height * i);
button.Text = string.Format("Button {0}", i);
DataGridView gridView = new DataGridView();
gridView.Parent = form;
gridView.Dock = DockStyle.Bottom;
form.Show();
}
this.helper = new ThumbnailHelper(this.xtraTabbedMdiManager);
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 임의 색상 구하기 - GetRandomColor()
/// <summary>
/// 임의 색상 구하기
/// </summary>
/// <returns>임의 색상</returns>
private Color GetRandomColor()
{
return Color.FromArgb
(
this.random.Next(255),
this.random.Next(255),
this.random.Next(255)
);
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요