Que faudrait faire est de créer une abstraction de toutes vos opérations de dessin, et paramétrer le look. Comme vous l'avez dit, c'est un défi car il y a beaucoup d'opérations de dessin dans chaque gui qui ont une sémantique et qui dépendent de la spécificité du contexte et qui devraient donc être paramétrées. Cela peut se transformer en une liste complète (par exemple, voulez-vous pouvoir styliser la manière dont votre combo-box dessine sa flèche, ou comment la barre d'une barre de défilement est dessinée). Si vous recherchez des exemples QT prend en charge le style de l'interface utilisateur via des feuilles de style CSS et par programme en créant une nouvelle classe de peinture. CSS est probablement aussi un bon exemple de ce à quoi un ensemble basique de propriétés stylables doit ressembler.
Mais voici un exemple très simple en code pseudo
class Window
{
Style borderStyle;
ScreenRectangle rect;
paint(StyledPainter painter)
{
painter.drawBorder(borderStyle,rect);
...
}
}
class Style
{
float lineWidth;
RGB color;
}
class StylePainter
{
DrawContext context;
drawBorder(Style borderStyle, ScreenRectangle rect)
{
context.setLineWidth(style.linewidth);
context.setColor(style.color);
context.drawRect(rect);
}
}