0

我正在为我的 Windows 应用程序使用 VisualStyleRenderer,它非常适用于 Windows XP 主题,但不适用于 Windows 经典主题。任何人都可以建议我如何使应用程序主题可支持。

更新:

让我用一张清晰的图片来描述它。我有一个列表视图,在列表项上,我正在使用 VisualStyleRenderer 类绘制一个按钮,并使用一些渐变颜色绘制该按钮区域。它适用于 Windows XP 主题,但是当我将主题更改为 Windows 经典时,按钮 wffect 没有出现,这是我使用 VisualStyleRenderer 类绘制的。

任何帮助将不胜感激

提前致谢。

4

1 回答 1

3

这不会发生。Windows 经典主题没有“视觉样式”。这就是他们所说的“经典”的含义:这是在视觉样式发明之前使用多年的主题。

Windows XP 的 Luna 主题是第一个支持视觉样式的主题。Windows Vista 和 7 中包含的Aero 主题也支持视觉样式,尽管它们看起来略有不同。

如果您照常使用VisualStyleRenderer该类,则事物将根据用户选择的主题进行绘制。正如您所说,当您选择 Windows XP 主题时,一切看起来都很好。选择 Classic 主题后,将使用 Classic 主题进行绘制。这是预期的行为;系统中的其他一切看起来也不同。

您将需要检查是否支持视觉样式,如果不支持,则回退到不同的绘图方法。MSDN 上有一个可用的示例。最简单的做法是添加一个语句来计算属性if返回的值。如果为真,您可以使用该类进行绘制。如果是假的,你需要把它踢老派。使用可能是一个很好的方法。Application.RenderWithVisualStylesVisualStyleRendererControlPaint

于 2011-02-28T11:19:26.397 回答