155 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
using System.Windows.Forms;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.SuperGrid
 | 
						|
{
 | 
						|
    public partial class CellInfoWindow : FloatWindow
 | 
						|
    {
 | 
						|
        #region Private variables
 | 
						|
 | 
						|
        private SuperGridControl _SuperGrid;
 | 
						|
        private GridCell _Cell;
 | 
						|
 | 
						|
        private System.Windows.Forms.ToolTip _ToolTip;
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        public CellInfoWindow(SuperGridControl superGrid, GridCell cell)
 | 
						|
        {
 | 
						|
            InitializeComponent();
 | 
						|
 | 
						|
            Image image = cell.GetInfoImage();
 | 
						|
 | 
						|
            if (image != null)
 | 
						|
                Size = image.Size;
 | 
						|
 | 
						|
            TopLevel = false;
 | 
						|
 | 
						|
            _SuperGrid = superGrid;
 | 
						|
            _Cell = cell;
 | 
						|
 | 
						|
            _ToolTip = new System.Windows.Forms.ToolTip();
 | 
						|
 | 
						|
            using (GraphicsPath path = GetImageGraphicsPath())
 | 
						|
                Region = new Region(path);
 | 
						|
 | 
						|
            Paint += CellInfoWindowPaint;
 | 
						|
            MouseClick += CellInfoWindowMouseClick;
 | 
						|
            MouseDoubleClick += CellInfoWindowMouseDoubleClick;
 | 
						|
 | 
						|
            MouseEnter += CellInfoWindowMouseEnter;
 | 
						|
            MouseLeave += CellInfoWindowMouseLeave;
 | 
						|
        }
 | 
						|
 | 
						|
        #region Public properties
 | 
						|
 | 
						|
        #region ToolTip
 | 
						|
 | 
						|
        public System.Windows.Forms.ToolTip ToolTip
 | 
						|
        {
 | 
						|
            get { return (_ToolTip); }
 | 
						|
            internal set { _ToolTip = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CellInfoWindowMouseEnter
 | 
						|
 | 
						|
        void CellInfoWindowMouseEnter(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (_SuperGrid.DoCellInfoEnterEvent(_Cell, this, _ToolTip, MousePosition) == false)
 | 
						|
                _ToolTip.SetToolTip(this, _Cell.InfoText);
 | 
						|
            else 
 | 
						|
                _ToolTip.SetToolTip(this, "");
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CellInfoWindowMouseLeave
 | 
						|
 | 
						|
        void CellInfoWindowMouseLeave(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            _SuperGrid.DoCellInfoLeaveEvent(_Cell, this, _ToolTip);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region GetImageGraphicsPath
 | 
						|
 | 
						|
        private GraphicsPath GetImageGraphicsPath()
 | 
						|
        {
 | 
						|
            Bitmap bitmap = new Bitmap(_Cell.GetInfoImage());
 | 
						|
            GraphicsPath graphicsPath = new GraphicsPath();
 | 
						|
 | 
						|
            Color colorTransparent = bitmap.GetPixel(0, 0);
 | 
						|
 | 
						|
            for (int row = 0; row < bitmap.Height; row++)
 | 
						|
            {
 | 
						|
                for (int col = 0; col < bitmap.Width; col++)
 | 
						|
                {
 | 
						|
                    if (bitmap.GetPixel(col, row) != colorTransparent)
 | 
						|
                    {
 | 
						|
                        int colOpaquePixel = col;
 | 
						|
                        int colNext;
 | 
						|
 | 
						|
                        for (colNext = colOpaquePixel; colNext < bitmap.Width; colNext++)
 | 
						|
                        {
 | 
						|
                            if (bitmap.GetPixel(colNext, row) == colorTransparent)
 | 
						|
                                break;
 | 
						|
                        }
 | 
						|
 | 
						|
                        graphicsPath.AddRectangle(new Rectangle(colOpaquePixel,
 | 
						|
                                                   row, colNext - colOpaquePixel, 1));
 | 
						|
 | 
						|
                        col = colNext;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            return (graphicsPath);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CellInfoWindowPaint
 | 
						|
 | 
						|
        void CellInfoWindowPaint(object sender, PaintEventArgs e)
 | 
						|
        {
 | 
						|
            Image image = _Cell.GetInfoImage();
 | 
						|
 | 
						|
            if (image != null)
 | 
						|
            {
 | 
						|
                Rectangle r = Bounds;
 | 
						|
                r.Location = Point.Empty;
 | 
						|
 | 
						|
                e.Graphics.DrawImageUnscaledAndClipped(image, r);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CellInfoWindowMouseClick
 | 
						|
 | 
						|
        void CellInfoWindowMouseClick(object sender, MouseEventArgs e)
 | 
						|
        {
 | 
						|
            _SuperGrid.DoCellInfoClickEvent(_Cell, e);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CellInfoWindowMouseDoubleClick
 | 
						|
 | 
						|
        void CellInfoWindowMouseDoubleClick(object sender, MouseEventArgs e)
 | 
						|
        {
 | 
						|
            _SuperGrid.DoCellInfoDoubleClickEvent(_Cell, e);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 | 
						|
 |