gpt4 book ai didi

delphi - 由于什么设计原因,TCanvas.StretchDraw 无法按 TIcon 的预期工作?

转载 作者:行者123 更新时间:2023-12-03 15:58:12 32 4
gpt4 key购买 nike

最近我发现对于 TIcon 实例的对象,TCanvas.StretchDraw 无法按预期工作(快速查看 TIcon.Draw code> 和 DrawIconEx 方法告诉了原因)。德尔福help承认这一事实。我知道解决方法,但我不知道 VCL 中这种设计决策背后的原因。有谁知道为什么他们决定在这件事上保持TIcon不变?

最佳答案

图标不是常规位图。这主要是由于历史设计和技术原因。

当图标很小、32x32 像素大、16 种颜色(美好的过去!)时,图标永远不会在屏幕上拉伸(stretch),这确实有意义。

但也有一个“常识”的技术原因。如此小的位图通常很难通过算法重新调整大小(默认的 GDI strech 算法非常快,但相对于 other interpolation modes, e.g. available with GDI+ 也会产生非常糟糕的结果),因此决定嵌入一组可执行文件中的图标,作为资源:每种尺寸一个图标。拉伸(stretch)过程的优点是由图标设计师在设计时在像素级别完成。而且 - 在那些日子里 - 使用专用图标和减少的调色板消耗的资源也少得多。

由于您应该有一组图标,每个图标都有预定义的大小,因此您不需要使用 StrechDraw,而只需选择要显示的正确图标即可。

因此,如果您想显示给定尺寸的图标,请确保选择正确的尺寸,或者使用临时位图获得最大的图标并放大它 - 或 DrawIconEx() 。或者,更好的是,如果您期望图片尺寸很大,请不要使用图标,而是使用位图或矢量图。

关于delphi - 由于什么设计原因,TCanvas.StretchDraw 无法按 TIcon 的预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19081641/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com