52 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Rendering
 | 
						|
{
 | 
						|
    internal class Office2010NavPaneButtonPainter : Office2007ButtonItemPainter
 | 
						|
    {
 | 
						|
        protected override void PaintStateBackground(ButtonItem button, Graphics g, Office2007ButtonItemStateColorTable stateColors, Rectangle r, IShapeDescriptor shape, bool isDefault, bool paintBorder)
 | 
						|
        {
 | 
						|
            if (stateColors == null || stateColors.Background == null || stateColors.Background.IsEmpty)
 | 
						|
                return;
 | 
						|
 | 
						|
            Rectangle shadowRect = r;
 | 
						|
            ShadowPaintInfo spi = new ShadowPaintInfo();
 | 
						|
            spi.Graphics = g;
 | 
						|
            spi.Rectangle = shadowRect;
 | 
						|
            ShadowPainter.Paint3(spi);
 | 
						|
 | 
						|
            r.Width -= 4;
 | 
						|
            r.Height -= 4;
 | 
						|
            r.Offset(1, 1);
 | 
						|
 | 
						|
            DisplayHelp.FillRectangle(g, r, stateColors.Background);
 | 
						|
            if (stateColors.BottomBackgroundHighlight != null && !stateColors.BottomBackgroundHighlight.IsEmpty)
 | 
						|
            {
 | 
						|
                Rectangle ellipse = new Rectangle(r.X, r.Y + r.Height / 2 - 2, r.Width, r.Height + 4);
 | 
						|
                GraphicsPath path = new GraphicsPath();
 | 
						|
                path.AddEllipse(ellipse);
 | 
						|
                PathGradientBrush brush = new PathGradientBrush(path);
 | 
						|
                brush.CenterColor = stateColors.BottomBackgroundHighlight.Start;
 | 
						|
                brush.SurroundColors = new Color[] { stateColors.BottomBackgroundHighlight.End };
 | 
						|
                brush.CenterPoint = new PointF(ellipse.X + ellipse.Width / 2, r.Bottom);
 | 
						|
                Blend blend = new Blend();
 | 
						|
                blend.Factors = new float[] { 0f, .5f, .6f };
 | 
						|
                blend.Positions = new float[] { .0f, .4f, 1f };
 | 
						|
                brush.Blend = blend;
 | 
						|
 | 
						|
                g.FillRectangle(brush, r);
 | 
						|
                brush.Dispose();
 | 
						|
                path.Dispose();
 | 
						|
            }
 | 
						|
 | 
						|
            DisplayHelp.DrawGradientRectangle(g, r, stateColors.OuterBorder, 1);
 | 
						|
            r.Inflate(-1, -1);
 | 
						|
            DisplayHelp.DrawGradientRectangle(g, r, stateColors.InnerBorder, 1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |