【问题标题】:C++/WIN32 A professional looking application - is it really possible?C++/WIN32 外观专业的应用程序 - 真的有可能吗?
【发布时间】:2011-07-16 13:18:14
【问题描述】:

我一直在到处寻找关于如何发布具有当今“高端”外观的应用程序的良好解决方案/提示。

众所周知,在使用 windows 编码时,我们通常会得到 windows 风格的颜色/按钮/列表等。它们看起来和感觉都很丑。

当我们决定要出售应用程序时,人们希望它看起来不错 - 显然是因为他们已经为此付费。

所以问题是:

  • 今天如何实现良好的应用程序外观?
  • 所有者图纸? (真的吗??)
  • 自定义控件?
  • 一些优秀的非免费库可以完成“脏”工作并“剥皮”您的应用程序?

我不相信程序员会做那些“透支”的技巧和窍门,完全完成一个控件需要很长时间。此外,我宁愿花时间编写内部应用程序的代码,也不愿玩弄每个控件绘图..

我不知道,但是有一个截止日期,现在在浏览了谷歌上的所有“所有者绘制”控件之后 - 我想这不是问题.. 当程序员需要时,必须有其他方便的东西让他的应用看起来很高端!

请帮忙,有什么工具吗?有小费吗 ?任何东西..?

几个例子,它们是如何实现这种外观的:

http://fooh.pl/pokaz/3198197337370da4cdfdebf0ae13933c_openfm.jpg

【问题讨论】:

  • 我相信,HTML 可以以某种方式使这变得更容易,并将设计与代码分开。但我也想看到这个问题的好答案。
  • 好吧,C++ (VStudio/WinAPI/W32) 编码器被困在那些该死的肮脏看起来很糟糕的 Windows 控件中,这有点奇怪。我相信必须有一个解决方案 - 我也见过最近有许多好看的应用程序,如果这些是所有者绘制的 - 那么我想知道这是否是 XXIst 世纪获胜程序员的唯一可能选择。
  • 该应用程序没有专业的用户界面。当然,它有很多消费者的性感,纯粹的视觉效果,但控件太小,太靠近,没有任何好的视觉指示什么是可点击的,什么是不可点击的。
  • Ben,是的,但与标准的 Windows 开发的应用程序相比 - 这种外观就像“哇”。这与“什么可点击或不可点击”无关 - 更多的是:他们是如何做到在里面获得“消费者性吸引力”的?
  • “windows 风格”是什么意思?如果您的投诉是关于在您不定制时没有获得定制外观,那么在这种情况下,问题应该被投票为不真实的。如果您的抱怨是关于获得例如Windows 2000 寻找按钮等,而不是主题的东西,然后好吧,将“清单”添加到您的应用程序。谷歌一下。

标签: c++ windows visual-studio-2010 skinning theming


【解决方案1】:

例如,您可以查看Qt。除了它的基本功能之外,您还可以style所有您喜欢的小部件(以非常类似于 CSS 的方式),从而为您的内容创建“主题”。

对于您链接到的图像中窗口的非矩形外观,您可以使用 Qt 的 setMask() 功能。

【讨论】:

  • 看看Qt——它看起来像一个windows 3.11 ui。抱歉,这不是我们要找的。​​span>
  • 如果您指的是示例,如果我是您,我会看得更深一些。当然,提供的示例并不“性感”,但它们确实说明了基本上任何东西都可以更改为您想要的任何外观。
  • Bart,如果有什么看起来很高端并且是用 QT 制作的,我想看看.. ?
  • Google 地球是用 Qt 编写的。那样可以么?如果没有,请选择您喜欢的其中之一:qt.nokia.com/qt-in-use
  • KDE...?也许你在这里找到你喜欢的东西:qt.nokia.com/qt-in-use?但实际上,这超出了重点,我们对“专业外观”的定义肯定不同。 ;) 我的观点仅仅是 Qt 提供了所有功能来做你想做的事,并且与恕我直言一起工作并不麻烦。从中得到你想要的。祝你好运。 :)
【解决方案2】:

听起来您想要一个完全可换肤的应用程序,但只需要典型的 Win32 控件即可。 是不可能的。但一般来说剥皮并不难,只是比你愿意花费的时间要多。

你的下一个问题是:一旦你有了一个皮肤应用,你需要一个专业的平面设计师来开发一个好的皮肤。太多的小项目开发人员认为他们可以制作自己的皮肤,但它几乎总是看起来很糟糕。如果没有设计专家,您想要的性感专业外观是不可能的。

最后,无论您最终得到什么精美的自定义皮肤,功能都可能需要自定义。也就是说,如果您想要非矩形控件或动画,这些都是您必须花时间开发的东西。

使用像 Qt 这样的工具包是一项不错的投资。但这种细节无论怎么切都需要花很多功夫。

有点题外话:由 UI 专家正确设计,默认的窗口控件看起来非常专业。使用原生 Windows 控件有很多好处,在尝试重新发明轮子之前,您真的应该仔细考虑一下:

  1. 键盘导航、屏幕阅读器、高对比度等辅助功能。您是否真的要尝试重新发明 Windows 通过控件提供的所有辅助功能?或者是否值得将残疾人排除在使用您的应用之外,以便您可以使用皮肤(更不用说使用无障碍功能的非残疾人)?
  2. 调整大小。您的皮肤是否意味着禁用任何窗口大小调整?再说一遍,这值得吗?
  3. 有些东西不能很好地蒙皮。例如滚动条和菜单。一些开发者重新发明了它们(滚动条特别难以重新发明),而另一些开发者只是让它们不蒙皮。
  4. Windows 主题。 Windows 主题不仅仅是开始菜单的颜色;它应该决定整个操作系统的外观。使用标准 Windows 控件允许用户使用内置机制来选择外观。

【讨论】:

  • +1 "但是这种细节无论怎么切都需要花费很多精力。"
  • 我认为你说得对,专业的平面设计师是实现“最终外观”所必需的。我问这一切的原因是因为我两周前已经完成了 OpenGL 实时游戏引擎的编码,并且不得不自己从头开始编码(包括用户界面)。当我们(开发团队)最终完成引擎的工作时,我们收到了为客户编写一个小型蓝牙应用程序的请求。我很震惊,2011 年我的应用程序看起来很糟糕,里面有一个标准控件。我知道一个专业的 GFX 成员可以做“把戏”,但我
  • 我认为即使使用标准控件也可能从看起来很糟糕到看起来很专业。 UI 专家有这方面的天赋,但遗憾的是他们没有得到充分利用。
  • (cont) 但我在想我会找到一些工具/技术来让我至少对应用程序的最终外观有一些“额外的控制”..
  • 十四,你绝对是对的。我可能会保持原样,看看我的客户是否会抱怨说:“为什么会这样?这是二十一世纪,看看我的苹果用户界面”
【解决方案3】:

该应用程序中可能没有单个控件。

相反,整个事物被渲染为图像。有一个背景图像,以及一些覆盖图像(大部分是透明的),以提供鼠标悬停高亮、禁用控件等。唯一没有预渲染的是当前曲目和播放列表信息,这是具有特定字体的纯文本。

可以对另一个图像执行命中测试。

程序员几乎不需要做任何工作来实现花哨的设计,这一切都是由艺术家完成的(像 Photoshop 这样的程序在编辑器中支持图层,使得构建所有叠加层变得非常容易)。

当然,缺点是按钮的作用与普通 Win32 按钮的作用不同。它们不支持键盘焦点(尽管可能有热键)并且只需在鼠标上移时激活。可访问性是可怕的,没有屏幕阅读器的信息,应用程序不尊重系统字体大小设置。为了使视力不佳的人能够阅读 UI,需要完全不同的皮肤。

【讨论】:

    【解决方案4】:

    C++ 团队整理了一个名为Hilo 的示例(就像夏威夷的地方一样),它不使用任何框架(不使用 ATL,不使用 MFC)并且都是本机代码。它使用了许多 Windows 7 功能和一些令人愉悦的图形和动画。所有代码和设计都可用并记录在案。看看吧。

    【讨论】:

      【解决方案5】:

      如果您想深入了解任何特定应用,可以启动 Spy Utility 并查看界面已分解为多少个控件:

      I want Spy++ but I don't have Visual Studio

      Is there a Spy++ like utility for WPF?

      例如...以皮肤模式窥探 Windows Media Player 发现有一个名为 WMP Skin Host 的窗口类,您可以看到它有 个子窗口。 (常规的非皮肤模式被分解为一些列表框和按钮等。)

      根据我的经验,当人们重新实现太多而无法“看起来很酷”时,“现代”换肤通常是一场灾难。它阻碍了自动化(通过AutoIt 之类的东西),更不用说残疾人的accessibility features。此外,如果您不使用基于操作系统的主题 API,今天看起来很酷的东西将不会保持最新状态。

      (注意:因为我是 Qt 的粉丝,我建议查看 QStyle and QStylePainter。但这更像是“主题化”而不是“剥皮”。)

      除非我发现我正在为一个绝对需要它的市场(如音乐播放器)开发,否则我会非常谨慎地在应用中使用皮肤。

      【讨论】:

        【解决方案6】:

        通常,您可以使用 GDI(+) 渲染来渲染自定义控件。

        【讨论】:

        • 是的,没错,但这需要我从头开始设计/编码每一个控件——我不想这样做,用 GDI+ 制作它们需要一年的时间。
        • @PeeS:如果你想要一个性感的 UI,你必须付出一些努力。你也可以试试 WPF for .NET。
        【解决方案7】:

        如果您不介意进入 C++/CLI,还有 WPF,它提供了对用户定义的样式和模板的相当广泛的控制。

        【讨论】:

        • 这是我没见过的东西——但从人们所说的——它不与 C++“合作”?还有什么吗?
        • 缺点是您需要将 .NET 框架与您的应用程序一起部署,并且正如您所提到的,C++/CLI 可能不合作(我不知道有设计者)但它是可行的,在至少以编程方式。至于我解决这个问题的方法,我一直在用 C#/WPF 编写 GUI 层,并使用互操作调用 C++
        【解决方案8】:

        您可能想好好看看SkinCrafter。它成熟、稳定且非常灵活。我不再使用它,但我的体验非常愉快。

        【讨论】:

        • 切特,看起来不错!你现在用的是什么来代替 SkinCrafter?
        • @PeeS 我现在正在开发的应用程序不需要增强的外观和感觉。如果他们这样做了,我会继续使用 SkinCrafter。
        • 谢谢切特,我现在点这个。
        【解决方案9】:

        您可以使用外部布局引擎,例如 terra informatica 的 HTMLayout,这个也使用了一些专业软件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-30
          • 2015-03-08
          • 1970-01-01
          • 2013-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多