我有一个关于 Delphi 中的高 DPI 应用程序的问题。在 Internet 上冲浪 我发现了 Žarko Gajić 发表的一系列文章。这些文章谈到了为 High-DPI 创建 Delphi 应用程序。该方法描述工作正常,但是作者在每个应用程序中都使用它;例如谈论 TSpeedButtons。
我的问题是:有没有办法将这种行为也实现到组件中?例如,我正在实现一个与 Embarcadero TSpeedButton 类似但使用透明 PNG 图像的简单组件。组件内的图像是在设计时从一些 PNG 图像加载的。我有一个 TObjectDictionary,在其中注册按钮状态:启用、禁用等。它是这样声明的:
FGlyphs: TObjectDictionary<TGlyphState, TPicture>
在使用此组件的应用程序中,我从 24 x 24 像素的文件中加载 PNG 图像。当我在 4K 显示器上执行应用程序时,这些图像变得非常小。如果我应用 Žarko 方法一切正常,但这样每个应用程序都需要使用我的组件来实现此解决方案。
如何直接在组件内部实现?我想在SetGlyph过程中实现它,就像下面的代码,但我不知道这是否是正确的地方。
procedure TNCRSpeedButton.SetGlyphs(Index: TGlyphState; Value: TPicture);
begin
FGlyphs.Items[Index].Assign(Value);
end;
TGlyphState 是这样定义的:
TGlyphState = (gtEnabled, gtDisabled, gtDown, gtOver);
爱神