Icon Customization

This feature allows developers to adjust the size, stroke, and stylistic details of the theme icon (sun, moon, or auto mode) to suit various design requirements.

Overview

The Icon Customization feature is managed through several public properties: IconScale, IconStrokeWidth, MoonPhase, and SunRayCount. These properties give developers control over the appearance of the theme icon by allowing adjustments to its size relative to the control, the thickness of its lines, and specific visual details for the moon and sun icons. With these options, the theme switcher can be easily adapted to match the design language of any .NET WinForms application.


Key Points

Aspect
Detail

Properties

IconScale, IconStrokeWidth, MoonPhase, SunRayCount

Data Types

IconScale: float; IconStrokeWidth: float; MoonPhase: float; SunRayCount: int

Default Values

IconScale: 0.7f; IconStrokeWidth: 2f; MoonPhase: 0.7f; SunRayCount: 8

Category

Icon

Effects

Controls the size, line thickness, and stylistic details of the theme icon (sun for light mode, moon for dark mode, and dynamic auto mode)

Mechanism

Adjustments trigger a redraw via Invalidate() ensuring that any customization changes are immediately reflected in the UI


Best Practices

Practice
Description

Choose Proportional IconScale Values

Select an IconScale value that maintains clarity without overwhelming the control; values between 0.1 and 1.0 are recommended.

Balance IconStrokeWidth with IconScale

Ensure that the stroke width is proportionate to the icon size to maintain visual consistency and clarity.

Test MoonPhase and SunRayCount Settings

Experiment with different values for MoonPhase and SunRayCount to achieve the desired look for dark and light mode icons, ensuring that the icon remains recognizable.


Common Pitfalls

Pitfall
Description

Inconsistent Scaling

Setting IconScale too low or too high may result in an icon that appears either too small or too dominating, affecting the overall design balance.

Overly Thick or Thin Strokes

An IconStrokeWidth that is disproportionate to the IconScale can lead to an icon that either looks overly bold or visually faint.

Extreme Values for MoonPhase and SunRayCount

Values outside the recommended ranges (MoonPhase between 0.1 and 0.9; SunRayCount between 4 and 12) can result in unexpected or unattractive icon renderings.


Usage Scenarios

Scenario
Description

Customizing Icon Appearance

Adjust the icon properties to align with a specific application theme, ensuring that the switcher seamlessly blends with the overall UI design.

Dynamic UI Adjustments

Use the icon customization properties to adapt the theme switcher's appearance in response to user interactions or changes in the application’s theme.

Responsive Design Integration

Fine-tune the icon's scale and stroke to ensure that it remains legible and aesthetically pleasing across various control sizes and display resolutions.


Real Life Usage Scenarios

Scenario
Description

Modern Application Theming

In a modern, flat UI design, adjusting the IconScale and IconStrokeWidth can help create a minimalist look that remains clear and functional on high-resolution screens.

Enterprise Software Customization

For corporate applications with strict design guidelines, tweaking the MoonPhase and SunRayCount allows the theme switcher to maintain brand consistency while offering visual appeal.

Adaptive Interfaces

In applications that dynamically adjust to user preferences, icon customization settings can be modified at runtime to offer a personalized user experience.


Troubleshooting Tips

Tip
Description

Verify Value Ranges

Ensure that values for IconScale, MoonPhase, and SunRayCount are within the recommended limits to avoid rendering issues.

Refresh Control on Change

Confirm that the control's Invalidate() method is being called after changing any icon customization properties, so that updates appear immediately.

Check Redraw Performance

If the icon does not update smoothly, review the application’s redraw and timer settings to ensure that property changes trigger the expected visual updates.


Code Examples

Basic Integration

using System;
using System.Windows.Forms;
using SiticoneNetFrameworkUI;

public class MainForm : Form
{
    public MainForm()
    {
        // Initialize the theme switcher control with custom icon settings
        var themeSwitcher = new SiticoneThemeSwitcher
        {
            IconScale = 0.8f,          // Increase the icon size relative to the control
            IconStrokeWidth = 3f,      // Set a thicker stroke for the icon for better visibility
            MoonPhase = 0.5f,          // Use a mid-range value for the moon phase
            SunRayCount = 10,          // Increase the number of sun rays for a detailed sun icon
            Size = new System.Drawing.Size(120, 120),
            Location = new System.Drawing.Point(40, 40)
        };

        Controls.Add(themeSwitcher);
    }
    
    [STAThread]
    public static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new MainForm());
    }
}

Dynamic Adjustment of Icon Properties

// Assuming themeSwitcher is an existing instance of SiticoneThemeSwitcher

// Method to update icon customization properties at runtime
void UpdateIconCustomization(float newIconScale, float newIconStrokeWidth, float newMoonPhase, int newSunRayCount)
{
    themeSwitcher.IconScale = newIconScale;
    themeSwitcher.IconStrokeWidth = newIconStrokeWidth;
    themeSwitcher.MoonPhase = newMoonPhase;
    themeSwitcher.SunRayCount = newSunRayCount;
    // The control automatically calls Invalidate() to refresh the icon appearance
}

Review

Aspect
Review

Customization Flexibility

Icon customization properties offer a wide range of adjustments, enabling developers to tailor the icon’s look precisely to match diverse UI designs.

Visual Consistency

Properly balanced IconScale and IconStrokeWidth settings ensure that the icon remains clear and aesthetically consistent across different themes.

Dynamic Adaptability

The ability to modify MoonPhase and SunRayCount in real time provides flexibility to respond to different application states or user preferences.


Summary

Summary Point
Description

Detailed Icon Control

The Icon Customization feature provides fine-grained control over the visual aspects of the theme icon, including size, stroke, and specific stylistic elements.

Easy Integration

Developers can quickly integrate and adjust these properties, with immediate visual feedback thanks to automatic redrawing via Invalidate().

Enhanced UI Consistency

By aligning the icon’s appearance with the overall design, this feature contributes significantly to a cohesive and modern user interface in WinForms applications.


Additional Sections

Performance Considerations

Consideration
Description

Redraw Optimization

Changes to icon properties trigger a redraw; minimize frequent adjustments in performance-critical applications to avoid unnecessary resource consumption.

Balancing Detail with Clarity

Excessive detail (e.g., very high SunRayCount) may impact rendering performance; use values that balance visual appeal with efficient rendering.

Customization Tips

Tip
Description

Test Across Different Themes

Verify that the customized icon appearance aligns with both light and dark themes to ensure consistency across mode changes.

Maintain Proportional Relationships

When adjusting IconScale, always consider adjusting IconStrokeWidth proportionally to maintain clarity and aesthetics.

Use Preview Modes

Leverage design-time previews in your IDE to see how the icon adjustments affect the overall control appearance before deploying to production.


This extensive documentation for the Icon Customization feature provides developers with a thorough understanding of how to adjust the visual aspects of the theme icon. The tables, code examples, and troubleshooting tips are intended to assist in integrating and optimizing the control’s icon appearance within various application scenarios.

Last updated