using System; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; using DevComponents.DotNetBar; namespace DevComponents.AdvTree.Display { internal class NodeExpandTriangleDisplay : NodeExpandDisplay { /// /// Draw triangular type expand button. /// /// Expand button context information. public override void DrawExpandButton(NodeExpandPartRendererEventArgs e) { if (e.ExpandPartBounds.IsEmpty) return; SmoothingMode sm = e.Graphics.SmoothingMode; e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; int pw = Dpi.Width5; Rectangle r = new Rectangle(e.ExpandPartBounds.X , e.ExpandPartBounds.Y + (e.ExpandPartBounds.Height - 8) / 2, pw, Dpi.Height8); GraphicsPath path = null; if (e.Node.Expanded) { path = new GraphicsPath(); path.AddLine(r.X, r.Y + pw, r.X + pw, r.Y); path.AddLine(r.X + pw, r.Y, r.X + pw, r.Y + pw); path.CloseAllFigures(); } else { path = new GraphicsPath(); path.AddLine(r.X, r.Y, r.X, r.Bottom); path.AddLine(r.X, r.Bottom, r.X + Dpi.Width4, r.Y + r.Height / 2); path.CloseAllFigures(); } Brush brush = GetBackgroundBrush(e); if (brush != null) { e.Graphics.FillPath(brush, path); brush.Dispose(); } Pen pen = GetBorderPen(e); if(pen!=null) { e.Graphics.DrawPath(pen, path); pen.Dispose(); } e.Graphics.SmoothingMode = sm; if(path!=null) path.Dispose(); } } }