为什么TBitBtn附带的字形如此丑陋过时?

15

TBitBtn 按钮在 Delphi 2010 中所关联的字形显示不够流畅,显得有些“丑陋”。它们仍然存在的原因是为了向后兼容吗?Embarcadero 是否提供更新的 png 替代方案,以便我使用而非使用这些普通的字形?

也许这只是我的想法,但我希望看到 Embarcadero 征求(或雇用)图形设计师来改进这些图标。

alt text


5
个人认为,我希望Embarcadero开始在他们自己的BDS菜单中使用具有Alpha通道的32bpp字形(现在已经有10年了!)。如果他们这样做,那么他们可能会取消菜单中糟糕的灰度算法并将其替换为ImageList_DrawIndirect,其中ImageListDrawParams.fState = ILS_SATURATE。 - David Heffernan
6个回答

17

哦,我多么希望那个控件能够消失:-/...它是在面向16位Windows 3.x的Delphi 1中引入的。那时候按钮上的小图案非常新颖,可以为UI“打扮”得更好看。(还记得BWCC吗?)我想当时的UI标准可能要低得多,因为每次看到带有这些图案的应用程序时,我都会感到不舒服......它们主要是为了向后兼容。

只需使用常规的TButton即可,它是一个本地的Windows控件,现在本身支持的样式甚至比TBitBtn还多(在那些日子里我们对元音字母也感到困难)。如果您一定要在按钮上包含图标,在Delphi/RAD Studio XE中包含了来自GlyFX(http://www.glyfx.com/)的许多免费、更现代化的图标。


1
@Allen,你对菜单字形灰化算法有什么看法?我在上面评论中提到了32bpp alpha混合图像的问题,它表现得非常糟糕。我意识到这样问你有点无礼,但我想趁着可能能引起你注意的机会试一试! - David Heffernan
TBitBtn被弃用了?这真是出乎意料。我以前从未听说过。当然,Delphi帮助文档也不在行。 - kludg
@David,我建议您确保在 QC(http://qc.embarcadero.com)中输入建议。有时为了保持向后兼容性的热情,会发生这样的事情。即便如此,我们一直在努力确保每个版本尽可能地解决此类问题。 - Allen Bauer
@David,同意。VCL应该更加友好地支持32bpp/alpha通道图像。2010和XE在这方面做了很多改进,但我们肯定可以做得更好。 - Allen Bauer
2
@我可以帮忙。特别是VistaDraw方法目前实现存在一个重大缺陷。 - David Heffernan
显示剩余3条评论

7

你为什么还在使用这些按钮呢?按钮不需要图标,随着uxtheme的出现,它们已经有足够的视觉提示了。也许这就是解释:为什么要更新现在已经过时的东西呢?


1
+1. 我同意。整个GUI设计看起来像Windows 3.1。 - Andreas Rejbrand
1
@Andreas 啊,Windows 3.1..... 你不想从“程序管理器”启动应用程序吗? 不,我想你不会想念它!! - David Heffernan
4
按钮不需要图标吗?即使微软设计指南允许使用图标“当它是命令的标准符号或者它帮助用户可视化命令的结果时”。请参见http://msdn.microsoft.com/en-us/library/aa511453.aspx。当然应该使用好的图标... - user160694
@Idsanon,确定、取消、关闭、全部、无?真的吗?现在有哪些主流应用程序使用这些图标呢?至于“忽略”,那是一个非常奇怪的图标 - 你能提供一种在某种程度上是标准的图标吗?图标适用于工具按钮,命令按钮不需要它们。好吧,这只是我的观点!!! - David Heffernan

5
(为了让所有阅读此线程的人都能全面了解:)TBitBtn(Win32原生控件)与TButton一样,但它具有一些额外的属性。其中之一是简单地显示标题旁边的图标。另一个是Kind,可以是bkYesbkNo等,并预设按钮的标题和图标。标准图标如上所示,确实有些陈旧。 更新 在使用该控件后并查看VCL源代码后,我发现这个控件实际上是用Delphi实现的,也就是说,所有绘制都是手动完成的(当然要使用UxThemes)。如果启用了Aero,则此控件不像普通Windows控件那样运行。感觉不同。 更新结束 是的,向后兼容性可能是其中一个原因。另一个原因是您可以自由设置“图标”为任何位图。此外,由于此外观的按钮在Windows环境中是非标准的,因此在Embarcadero中可能优先级相对较低。
尽管如此,为了给您提供一些实用信息,在Delphi 2009(至少)中,有一些现代PNG图像安装在以下位置:
C:\Program Files (x86)\Common Files\CodeGear Shared\Images\GlyFX\Icons\PNG\16x16

2
哦,天啊:“这是一个主要的-1……”。我在SO上呆得太久了…… - Andreas Rejbrand
1
这些控件是几十年前创建的,当时最重要的是将窗口句柄最小化以节省资源。 - Barry Kelly

5

向后兼容性极致。

您不想在Delphi XE中看到您的Delphi 1 FishFact应用程序有所不同,是吗?

请注意,使用更新的Delphi版本可以获得全新的图标集。
在Windows XP上,这些位于C:\Program Files\Common Files\CodeGear Shared\Images\GlyFX中。

--jeroen


3
我也不理解为什么他们仍然不支持PNG(和其他图像类型)的所有组件。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接