主题GUI系统的设计实例?

时间:2009-07-03 17:29:05

标签: user-interface

您能否建议/提供在GUI系统中实现运行时可更改主题的任何一般设计示例?这似乎是一个相当大的挑战。但是,许多GUI系统都存在这种功能,因此必须遵循一般的设计思想。

  • 为了100%清晰,设计代表程序设计,而不是图形设计:)

1 个答案:

答案 0 :(得分:1)

需要做的是创建所有绘图操作的抽象,并对外观进行参数化。正如你所说,这是一个相当大的挑战,因为每个gui中有很多绘图操作都有语义,并且取决于你想要的特定于上下文的因素,因此应该进行参数化。这可以变成一个完整的列表(例如,您希望能够按照组合框绘制箭头的方式设置样式,或者如何绘制滚动条的条形)。如果您正在寻找示例QT支持通过CSS样式表设置UI样式,并通过创建新的绘图类以编程方式。

CSS可能也是一个基本的可设置属性需要的好例子。

但这是伪代码

中的非常简单的示例
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);
  }
}