2009-07-03 9 views
2

Pouvez-vous suggérer/référez-vous à des exemples de conception générale pour implémenter des thèmes modifiables à l'exécution dans un système GUI? Cela semble être un défi. Cependant, de nombreux systèmes GUI présentent ce genre de fonctionnalité, il doit donc y avoir des idées de conception générales qui pourraient être suivies.Exemples de conception de systèmes à interface graphique à thème?

  • Juste pour être clair à 100%, la conception est synonyme de design programatic, pas la conception graphique :)

Répondre

1

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); 
    } 
} 
Questions connexes