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

TestProject_Console.zip
다운로드

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

댓글을 달아 주세요