У меня вопрос по поводу приложения с высоким разрешением в Delphi.
В Интернете я нашел серию статей, опубликованных Жарко Гайичем. В этих статьях рассказывается о создании приложения Delphi, готового для High-DPI.
Описанный метод прекрасно работает, но автор использует его внутри каждого отдельного приложения; например, говоря о TSpeedButtons.
У меня такой вопрос: есть ли способ реализовать такое поведение также в компонентах? Например, я реализую простой компонент, который работает как Embarcadero TSpeedButton, но использует прозрачные изображения PNG.
Изображения внутри компонента загружаются во время разработки из некоторых изображений PNG. У меня есть TObjectDictionary, в котором я регистрирую состояния кнопок: включен, отключен и т. Д. Он объявлен следующим образом:
FGlyphs: TObjectDictionary<TGlyphState, TPicture>
В приложении, использующем этот компонент, я загружаю изображения PNG из файлов с разрешением 24 x 24 пикселя. Когда я запускаю приложение на мониторе 4K, эти изображения становятся очень маленькими.
Если я применяю метод Žarko, все работает хорошо, но таким образом каждое приложение, использующее мой компонент, должно реализовать это решение.
Как реализовать это непосредственно внутри компонента? Я подумал реализовать это внутри процедуры SetGlyph , которая похожа на следующий код, но я не знаю, является ли это правильным местом.
procedure TNCRSpeedButton.SetGlyphs(Index: TGlyphState; Value: TPicture);
begin
FGlyphs.Items[Index].Assign(Value);
end;
TGlyphState определяется следующим образом:
TGlyphState = (gtEnabled, gtDisabled, gtDown, gtOver);
Эрос