79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
 | 
						|
namespace DevComponents.AdvTree.Display
 | 
						|
{
 | 
						|
    internal class DragDropMarkerDisplay
 | 
						|
    {
 | 
						|
        public void DrawMarker(DragDropMarkerRendererEventArgs e)
 | 
						|
        {
 | 
						|
            Graphics g = e.Graphics;
 | 
						|
            Rectangle bounds = e.Bounds;
 | 
						|
            if (bounds.IsEmpty || _MarkerColor.IsEmpty) return;
 | 
						|
 | 
						|
            if (bounds.Width == AdvTree.DragInsertMarkSize) // Vertical insert mark
 | 
						|
            {
 | 
						|
                using (SolidBrush brush = new SolidBrush(_MarkerColor))
 | 
						|
                {
 | 
						|
                    using (Pen pen = new Pen(brush, 1))
 | 
						|
                    {
 | 
						|
                        Point p = new Point(bounds.X + 4, bounds.Y);
 | 
						|
                        g.DrawLine(pen, p.X, p.Y, p.X, bounds.Bottom - 1);
 | 
						|
                    }
 | 
						|
 | 
						|
                    using (GraphicsPath path = new GraphicsPath())
 | 
						|
                    {
 | 
						|
                        path.AddLine(bounds.X, bounds.Y, bounds.X + 8, bounds.Y );
 | 
						|
                        path.AddLine(bounds.X + 8, bounds.Y, bounds.X + 4, bounds.Y + 4);
 | 
						|
                        path.CloseAllFigures();
 | 
						|
                        g.FillPath(brush, path);
 | 
						|
                    }
 | 
						|
                    using (GraphicsPath path = new GraphicsPath())
 | 
						|
                    {
 | 
						|
                        path.AddLine(bounds.X, bounds.Bottom, bounds.X + 8, bounds.Bottom);
 | 
						|
                        path.AddLine(bounds.X + 8, bounds.Bottom, bounds.X + 4, bounds.Bottom - 4);
 | 
						|
                        path.CloseAllFigures();
 | 
						|
                        g.FillPath(brush, path);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                // Horizontal insert mark
 | 
						|
                using (SolidBrush brush = new SolidBrush(_MarkerColor))
 | 
						|
                {
 | 
						|
                    using (Pen pen = new Pen(brush, 1))
 | 
						|
                    {
 | 
						|
                        Point p = new Point(bounds.X, bounds.Y + 4);
 | 
						|
                        g.DrawLine(pen, p.X, p.Y, bounds.Right - 1, p.Y);
 | 
						|
                    }
 | 
						|
 | 
						|
                    using (GraphicsPath path = new GraphicsPath())
 | 
						|
                    {
 | 
						|
                        path.AddLine(bounds.X, bounds.Y, bounds.X, bounds.Y + 8);
 | 
						|
                        path.AddLine(bounds.X, bounds.Y + 8, bounds.X + 4, bounds.Y + 4);
 | 
						|
                        path.CloseAllFigures();
 | 
						|
                        g.FillPath(brush, path);
 | 
						|
                    }
 | 
						|
                    using (GraphicsPath path = new GraphicsPath())
 | 
						|
                    {
 | 
						|
                        path.AddLine(bounds.Right, bounds.Y, bounds.Right, bounds.Y + 8);
 | 
						|
                        path.AddLine(bounds.Right, bounds.Y + 8, bounds.Right - 4, bounds.Y + 4);
 | 
						|
                        path.CloseAllFigures();
 | 
						|
                        g.FillPath(brush, path);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private Color _MarkerColor;
 | 
						|
        public Color MarkerColor
 | 
						|
        {
 | 
						|
            get { return _MarkerColor; }
 | 
						|
            set { _MarkerColor = value; }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |