73 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Layout
 | 
						|
{
 | 
						|
    internal class InsertMarker : Control
 | 
						|
    {
 | 
						|
        #region Constructor
 | 
						|
        /// <summary>
 | 
						|
        /// Initializes a new instance of the InsertMarker class.
 | 
						|
        /// </summary>
 | 
						|
        public InsertMarker()
 | 
						|
        {
 | 
						|
            this.SetStyle(ControlStyles.UserPaint | ControlStyles.ResizeRedraw | ControlStyles.OptimizedDoubleBuffer, true);
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Implementation
 | 
						|
        protected override void OnPaint(PaintEventArgs e)
 | 
						|
        {
 | 
						|
            Graphics g = e.Graphics;
 | 
						|
            using (SolidBrush brush = new SolidBrush(this.ForeColor))
 | 
						|
            {
 | 
						|
                g.FillRectangle(brush, new Rectangle(0, 0, this.Width, 2));
 | 
						|
                g.FillRectangle(brush, new Rectangle(0, this.Height - 2, this.Width, 2));
 | 
						|
                g.FillRectangle(brush, this.Width / 2 - 1, 0, 2, this.Height);
 | 
						|
            }
 | 
						|
            base.OnPaint(e);
 | 
						|
        }
 | 
						|
        protected override void OnHandleCreated(EventArgs e)
 | 
						|
        {
 | 
						|
            UpdateRegion();
 | 
						|
            base.OnHandleCreated(e);
 | 
						|
        }
 | 
						|
        protected override void OnResize(EventArgs e)
 | 
						|
        {
 | 
						|
            UpdateRegion();
 | 
						|
            base.OnResize(e);
 | 
						|
        }
 | 
						|
        private void UpdateRegion()
 | 
						|
        {
 | 
						|
            GraphicsPath path = new GraphicsPath();
 | 
						|
            path.AddLine(0, 0, this.Width, 0);
 | 
						|
            path.AddLine(this.Width, 0, this.Width, 2);
 | 
						|
            path.AddLine(this.Width, 2, this.Width / 2 - 1, 2);
 | 
						|
            path.AddLine(this.Width / 2 + 1, 2, this.Width / 2 + 1, this.Height-2);
 | 
						|
            path.AddLine(this.Width / 2 + 1, this.Height - 2, this.Width, this.Height-2);
 | 
						|
            path.AddLine(this.Width, this.Height - 2, this.Width, this.Height);
 | 
						|
            path.AddLine(this.Width, this.Height, 0, this.Height);
 | 
						|
            path.AddLine(0, this.Height, 0, this.Height-2);
 | 
						|
            path.AddLine(0, this.Height - 2, this.Width/2-1, this.Height-2);
 | 
						|
            path.AddLine(this.Width / 2 - 1, this.Height - 2, this.Width/2-1, 2);
 | 
						|
            path.AddLine(this.Width / 2 - 1, 2, 0, 2);
 | 
						|
            path.CloseAllFigures();
 | 
						|
 | 
						|
            Region reg = new Region();
 | 
						|
            reg.MakeEmpty();
 | 
						|
            reg.Union(path);
 | 
						|
 | 
						|
            path.Widen(SystemPens.Control);
 | 
						|
            //Region r2 = new Region(path);
 | 
						|
            reg.Union(path);
 | 
						|
 | 
						|
            this.Region = reg;
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |