public override void CPDrawComboButton (Graphics graphics, Rectangle rectangle, ButtonState state) {
Point[] arrow = new Point[3];
Point P1;
Point P2;
Point P3;
int centerX;
int centerY;
int shiftX;
int shiftY;
Rectangle rect;
if ((state & ButtonState.Checked)!=0) {
graphics.FillRectangle(ResPool.GetHatchBrush (HatchStyle.Percent50, ColorControlLightLight, ColorControlLight),rectangle);
}
if ((state & ButtonState.Flat)!=0) {
ControlPaint.DrawBorder(graphics, rectangle, ColorControlDark, ButtonBorderStyle.Solid);
} else {
if ((state & (ButtonState.Pushed | ButtonState.Checked))!=0) {
// this needs to render like a pushed button - jba
// CPDrawBorder3D(graphics, rectangle, Border3DStyle.Sunken, Border3DSide.Left | Border3DSide.Top | Border3DSide.Right | Border3DSide.Bottom, ColorControl);
Rectangle trace_rectangle = new Rectangle(rectangle.X, rectangle.Y, Math.Max (rectangle.Width-1, 0), Math.Max (rectangle.Height-1, 0));
graphics.DrawRectangle (SystemPens.ControlDark, trace_rectangle);
} else {
CPDrawBorder3D(graphics, rectangle, Border3DStyle.Raised, Border3DSide.Left | Border3DSide.Top | Border3DSide.Right | Border3DSide.Bottom, ColorControl);
}
}
rect=new Rectangle(rectangle.X+rectangle.Width/4, rectangle.Y+rectangle.Height/4, rectangle.Width/2, rectangle.Height/2);
centerX=rect.Left+rect.Width/2;
centerY=rect.Top+rect.Height/2;
shiftX=Math.Max(1, rect.Width/8);
shiftY=Math.Max(1, rect.Height/8);
if ((state & ButtonState.Pushed)!=0) {
shiftX++;
shiftY++;
}
rect.Y-=shiftY;
centerY-=shiftY;
P1=new Point(rect.Left, centerY);
P2=new Point(rect.Right, centerY);
P3=new Point(centerX, rect.Bottom);
arrow[0]=P1;
arrow[1]=P2;
arrow[2]=P3;
/* Draw the arrow */
if ((state & ButtonState.Inactive)!=0) {
/* Move away from the shadow */
arrow[0].X += 1; arrow[0].Y += 1;
arrow[1].X += 1; arrow[1].Y += 1;
arrow[2].X += 1; arrow[2].Y += 1;
graphics.FillPolygon(SystemBrushes.ControlLightLight, arrow, FillMode.Winding);
arrow[0]=P1;
arrow[1]=P2;
arrow[2]=P3;
graphics.FillPolygon(SystemBrushes.ControlDark, arrow, FillMode.Winding);
} else {
graphics.FillPolygon(SystemBrushes.ControlText, arrow, FillMode.Winding);
}
}