/// <summary> /// Perform drawing of a check box. /// </summary> /// <param name="context">Render context.</param> /// <param name="displayRect">Display area available for drawing.</param> /// <param name="palette">Palette for sourcing display values.</param> /// <param name="enabled">Should check box be displayed as enabled.</param> /// <param name="checkState">The checked state of the check box.</param> /// <param name="tracking">Should check box be displayed as hot tracking.</param> /// <param name="pressed">Should check box be displayed as pressed.</param> public override void DrawCheckBox(RenderContext context, Rectangle displayRect, IPalette palette, bool enabled, CheckState checkState, bool tracking, bool pressed) { Debug.Assert(context != null); Debug.Assert(palette != null); // Validate parameter references if (context == null) throw new ArgumentNullException("context"); if (palette == null) throw new ArgumentNullException("palette"); // Grab an image appropriate to the state Image drawImage = palette.GetCheckBoxImage(enabled, checkState, tracking, pressed); // If no image from the palette then get a system check box if (drawImage == null) { // Convert incoming parameters to check box state CheckBoxState state = DiscoverCheckBoxState(enabled, checkState, tracking, pressed); // Request the glyph be drawn at the top left of the display rectangle CheckBoxRenderer.DrawCheckBox(context.Graphics, displayRect.Location, state); } else { // Find the offset to center the image int xOffset = (displayRect.Width - drawImage.Width) / 2; int yOffset = (displayRect.Height - drawImage.Height) / 2; // Draw the image centered context.Graphics.DrawImage(drawImage, displayRect.X + xOffset, displayRect.Y + yOffset, drawImage.Width, drawImage.Height); } }
/// <summary> /// Calculate the requested display size for the check box. /// </summary> /// <param name="context">Render context.</param> /// <param name="palette">Palette for sourcing display values.</param> /// <param name="enabled">Should check box be displayed as enabled.</param> /// <param name="checkState">The checked state of the check box.</param> /// <param name="tracking">Should check box be displayed as hot tracking.</param> /// <param name="pressed">Should check box be displayed as pressed.</param> public override Size GetCheckBoxPreferredSize(ViewLayoutContext context, IPalette palette, bool enabled, CheckState checkState, bool tracking, bool pressed) { Debug.Assert(context != null); Debug.Assert(palette != null); // Validate parameter references if (context == null) throw new ArgumentNullException("context"); if (palette == null) throw new ArgumentNullException("palette"); // Grab an image appropriate to the state Image drawImage = palette.GetCheckBoxImage(enabled, checkState, tracking, pressed); // If no image from the palette then get a system check box if (drawImage == null) { // Convert incoming parameters to check box state CheckBoxState state = DiscoverCheckBoxState(enabled, checkState, tracking, pressed); // Request the drawing size of the check box glyph return CheckBoxRenderer.GetGlyphSize(context.Graphics, state); } else return drawImage.Size; }