void PaintWorker(PaintEventArgs e, bool up, CheckState state) { up = up && state == CheckState.Unchecked; ColorData colors = PaintRender(e.Graphics).Calculate(); LayoutData layout; if (Application.RenderWithVisualStyles) { //don't have the text-pressed-down effect when we use themed painting //this is for consistency with win32 app. layout = PaintLayout(e, true).Layout(); } else { layout = PaintLayout(e, up).Layout(); } Graphics g = e.Graphics; Button thisbutton = Control as Button; if (Application.RenderWithVisualStyles) { PaintThemedButtonBackground(e, Control.ClientRectangle, up); } else { Brush backbrush = null; if (state == CheckState.Indeterminate) { backbrush = CreateDitherBrush(colors.highlight, colors.buttonFace); } try { Rectangle bounds = Control.ClientRectangle; if (up) { // We are going to draw a 2 pixel border bounds.Inflate(-borderWidth, -borderWidth); } else { // We are going to draw a 1 pixel border. bounds.Inflate(-1, -1); } PaintButtonBackground(e, bounds, backbrush); } finally { if (backbrush != null) { backbrush.Dispose(); backbrush = null; } } } PaintImage(e, layout); //inflate the focus rectangle to be consistent with the behavior of Win32 app if (Application.RenderWithVisualStyles) { layout.focus.Inflate(1, 1); } if (up & IsHighContrastHighlighted()) { Color highlightTextColor = SystemColors.HighlightText; PaintField(e, layout, colors, highlightTextColor, false); if (Control.Focused && Control.ShowFocusCues) { // drawing focus rectangle of HighlightText color ControlPaint.DrawHighContrastFocusRectangle(g, layout.focus, highlightTextColor); } } else if (up & IsHighContrastHighlighted()) { PaintField(e, layout, colors, SystemColors.HighlightText, true); } else { PaintField(e, layout, colors, colors.windowText, true); } if (!Application.RenderWithVisualStyles) { Rectangle r = Control.ClientRectangle; if (Control.IsDefault) { r.Inflate(-1, -1); } DrawDefaultBorder(g, r, colors.windowFrame, Control.IsDefault); if (up) { Draw3DBorder(g, r, colors, up); } else { // contrary to popular belief, not Draw3DBorder(..., false); // ControlPaint.DrawBorder(g, r, colors.buttonShadow, ButtonBorderStyle.Solid); } } }
private void PaintWorker(PaintEventArgs e, bool up, CheckState state) { up = up && state == CheckState.Unchecked; ColorData colors = PaintRender(e).Calculate(); LayoutData layout; if (Application.RenderWithVisualStyles) { // Don't have the text-pressed-down effect when we use themed painting to be consistent with Win32. layout = PaintLayout(e, true).Layout(); } else { layout = PaintLayout(e, up).Layout(); } _ = Control as Button; if (Application.RenderWithVisualStyles) { PaintThemedButtonBackground(e, Control.ClientRectangle, up); } else { Brush backbrush = null; if (state == CheckState.Indeterminate) { backbrush = CreateDitherBrush(colors.Highlight, colors.ButtonFace); } try { Rectangle bounds = Control.ClientRectangle; if (up) { // We are going to draw a 2 pixel border bounds.Inflate(-BorderWidth, -BorderWidth); } else { // We are going to draw a 1 pixel border. bounds.Inflate(-1, -1); } PaintButtonBackground(e, bounds, backbrush); } finally { backbrush?.Dispose(); } } PaintImage(e, layout); // Inflate the focus rectangle to be consistent with the behavior of Win32 app if (Application.RenderWithVisualStyles) { layout.Focus.Inflate(1, 1); } if (up & IsHighContrastHighlighted()) { Color highlightTextColor = SystemColors.HighlightText; PaintField(e, layout, colors, highlightTextColor, false); if (Control.Focused && Control.ShowFocusCues) { // Drawing focus rectangle of HighlightText color ControlPaint.DrawHighContrastFocusRectangle(e.GraphicsInternal, layout.Focus, highlightTextColor); } } else if (up & IsHighContrastHighlighted()) { PaintField(e, layout, colors, SystemColors.HighlightText, true); } else { PaintField(e, layout, colors, colors.WindowText, true); } if (!Application.RenderWithVisualStyles) { Rectangle r = Control.ClientRectangle; if (Control.IsDefault) { r.Inflate(-1, -1); } DrawDefaultBorder(e, r, colors.WindowFrame, Control.IsDefault); if (up) { Draw3DBorder(e, r, colors, raised: up); } else { // Not Draw3DBorder(..., raised: false); ControlPaint.DrawBorderSimple(e, r, colors.ButtonShadow); } } }