Delphi高DPI组件
我有一个关于Delphi中高DPI应用程序的问题。 在互联网上,我发现了一系列由阿尔科·加基奇发表的文章。这些文章讨论了如何创建适合高DPI的Delphi应用程序。 该方法描述的效果很好,但作者在每个应用程序中都使用它;例如,谈到TSpeedButtons 我的问题是:有没有一种方法可以在组件中实现这种行为?例如,我正在实现一个类似Embarcadero TSpeedButton但使用透明PNG图像的简单组件。 组件内的图像在设计时从一些PNG图像加载。我有一个TObjectDictionary,我在其中注册了按钮状态:enabled、disabled等等。它是这样声明的:Delphi高DPI组件,delphi,highdpi,Delphi,Highdpi,我有一个关于Delphi中高DPI应用程序的问题。 在互联网上,我发现了一系列由阿尔科·加基奇发表的文章。这些文章讨论了如何创建适合高DPI的Delphi应用程序。 该方法描述的效果很好,但作者在每个应用程序中都使用它;例如,谈到TSpeedButtons 我的问题是:有没有一种方法可以在组件中实现这种行为?例如,我正在实现一个类似Embarcadero TSpeedButton但使用透明PNG图像的简单组件。 组件内的图像在设计时从一些PNG图像加载。我有一个TObjectDictionary
FGlyphs: TObjectDictionary<TGlyphState, TPicture>
TGlyphState的定义如下:
TGlyphState = (gtEnabled, gtDisabled, gtDown, gtOver);
Eros1)首先,您应该在项目选项->应用程序->目标平台->清单文件中启用选项启用高Dpi
。此选项自Delphi 10(西雅图)起提供
2) 如果在W10操作系统中有不同的比例
,则可以计算并运行调整窗口和一个特定窗口上的所有元素的TWinControl.ScaleBy
(可用于表单)
请参阅上的演示
演示包含t工具按钮
控件。高DPI感知取决于每个应用程序,而不是每个组件。如果应用程序不支持高DPI感知,则不能使用高DPI感知组件。
TGlyphState = (gtEnabled, gtDisabled, gtDown, gtOver);