protected virtual void PaintArrow(Point p, SplitterPaintInfo info) { System.Drawing.Drawing2D.GraphicsPath path=UIGraphics.GetTrianglePath(p,ArrowSize,this.GetDirection(info)); if(!info.Colors.ExpandFillColor.IsEmpty) { using(SolidBrush brush=new SolidBrush(info.Colors.ExpandFillColor)) info.Graphics.FillPath(brush,path); } if(!info.Colors.ExpandLineColor.IsEmpty) { using(Pen pen=new Pen(info.Colors.ExpandLineColor,1)) info.Graphics.DrawPath(pen,path); } path.Dispose(); }
protected virtual void PaintBackground(SplitterPaintInfo info) { int gradientAngle=info.Colors.BackColorGradientAngle; Rectangle r=info.DisplayRectangle; if(info.Dock==DockStyle.Top || info.Dock==DockStyle.Bottom) gradientAngle+=90; if(info.Colors.BackColor2.IsEmpty) { using(SolidBrush brush=new SolidBrush(info.Colors.BackColor)) info.Graphics.FillRectangle(brush,r); } else { using(System.Drawing.Drawing2D.LinearGradientBrush brush=CreateLinearGradientBrush(r,info.Colors.BackColor,info.Colors.BackColor2,gradientAngle)) info.Graphics.FillRectangle(brush,r); } }
protected eTriangleDirection GetDirection(SplitterPaintInfo info) { if(info.Dock==DockStyle.Top && info.Expanded || info.Dock==DockStyle.Bottom && !info.Expanded) { // Points up return eTriangleDirection.Top; } else if(info.Dock==DockStyle.Top && !info.Expanded || info.Dock==DockStyle.Bottom && info.Expanded) { // Points down return eTriangleDirection.Bottom; } else if(info.Dock==DockStyle.Left && info.Expanded || info.Dock==DockStyle.Right && !info.Expanded) { // Points left return eTriangleDirection.Left; } return eTriangleDirection.Right; }
/// <summary> /// Paints splitter. /// </summary> /// <param name="info">Paint information.</param> public override void Paint(SplitterPaintInfo info) { int spacing=8; Rectangle r=info.DisplayRectangle; Graphics g=info.Graphics; SplitterColors colors=info.Colors; PaintBackground(info); if(info.Dock==DockStyle.Top || info.Dock==DockStyle.Bottom) { Point pStart=new Point(r.X+(r.Width-34)/2-1,r.Y+(r.Height-4)/2); using(SolidBrush brush=new SolidBrush(colors.GripLightColor)) //White { int x=pStart.X+1; int y=pStart.Y+1; for(int i=0;i<9;i++) { g.FillRectangle(brush,x,y,2,2); x+=4; } } using(SolidBrush brush=new SolidBrush(colors.GripDarkColor)) //Color.FromArgb(128,ControlPaint.Dark(colors.PanelBackground)))) { int x=pStart.X; int y=pStart.Y; for(int i=0;i<9;i++) { g.FillRectangle(brush,x,y,2,2); x+=4; } } if(info.Expandable) { Point p=new Point(r.X+(r.Width-36)/2-this.ArrowSize-spacing,r.Y+(r.Height-ArrowSize/2)/2); this.PaintArrow(p,info); p.Offset(36+spacing*2+ArrowSize,0); this.PaintArrow(p,info); } } else { Point pStart=new Point(r.X+(r.Width-4)/2,r.Y+(r.Height-34)/2); using(SolidBrush brush=new SolidBrush(colors.GripLightColor)) { int y=pStart.Y; //r.Y+(r.Height-34)/2; int x=pStart.X+1; // r.X+2; for(int i=0;i<9;i++) { g.FillRectangle(brush,x,y,2,2); y+=4; } } using(SolidBrush brush=new SolidBrush(colors.GripDarkColor)) { int y=pStart.Y-1; //r.Y+(r.Height-34)/2-1; int x=pStart.X; //r.X+1; for(int i=0;i<9;i++) { g.FillRectangle(brush,x,y,2,2); y+=4; } } if(info.Expandable) { Point p=new Point(r.X+(r.Width-ArrowSize/2)/2,r.Y+(r.Height-36)/2-this.ArrowSize-spacing); this.PaintArrow(p,info); p.Offset(0,36+spacing*2+ArrowSize); this.PaintArrow(p,info); } } }
/// <summary> /// Paints splitter. /// </summary> /// <param name="info">Paint information.</param> public virtual void Paint(SplitterPaintInfo info) { }
/// <summary> /// Paints splitter. /// </summary> /// <param name="info">Paint information.</param> public override void Paint(SplitterPaintInfo info) { int gripWidth=42; int spacing=8; Rectangle r=info.DisplayRectangle; Graphics g=info.Graphics; PaintBackground(info); if(info.Dock==DockStyle.Top || info.Dock==DockStyle.Bottom) { if(info.DisplayRectangle.Width-ArrowSize*2<gripWidth) { gripWidth=info.DisplayRectangle.Width-ArrowSize*2; if(gripWidth<0) gripWidth=info.DisplayRectangle.Width; } Point pStart=new Point(r.X+(r.Width-gripWidth)/2,r.Y+(r.Height-5)/2); SolidBrush brushLight=new SolidBrush(info.Colors.GripLightColor); SolidBrush brushDark=new SolidBrush(info.Colors.GripDarkColor); for(int i=pStart.X;i<pStart.X+gripWidth;i+=3) { g.FillRectangle(brushLight,i,pStart.Y+3,1,1); g.FillRectangle(brushDark,i+1,pStart.Y+4,1,1); g.FillRectangle(brushLight,i+1,pStart.Y,1,1); g.FillRectangle(brushDark,i+2,pStart.Y+1,1,1); } brushLight.Dispose(); brushDark.Dispose(); if(info.Expandable) { Point p=new Point(r.X+(r.Width-gripWidth)/2-this.ArrowSize-spacing,r.Y+(r.Height-ArrowSize/2)/2); this.PaintArrow(p,info); p.Offset(gripWidth+spacing*2+ArrowSize,0); this.PaintArrow(p,info); } } else { if(info.DisplayRectangle.Height-ArrowSize*2<gripWidth) { gripWidth=info.DisplayRectangle.Height-ArrowSize*2; if(gripWidth<0) gripWidth=info.DisplayRectangle.Height; } Point pStart=new Point(r.X+(r.Width-5)/2,r.Y+(r.Height-gripWidth)/2); SolidBrush brushLight=new SolidBrush(info.Colors.GripLightColor); SolidBrush brushDark=new SolidBrush(info.Colors.GripDarkColor); for(int i=pStart.Y;i<pStart.Y+gripWidth;i+=3) { g.FillRectangle(brushLight,pStart.X+3,i,1,1); g.FillRectangle(brushDark,pStart.X+4,i+1,1,1); g.FillRectangle(brushLight,pStart.X,i+1,1,1); g.FillRectangle(brushDark,pStart.X+1,i+2,1,1); } brushLight.Dispose(); brushDark.Dispose(); if(info.Expandable) { Point p=new Point(r.X+(r.Width-ArrowSize/2)/2,r.Y+(r.Height-gripWidth)/2-this.ArrowSize-spacing); this.PaintArrow(p,info); p.Offset(0,gripWidth+spacing*2+ArrowSize); this.PaintArrow(p,info); } } }