2 votes

Comment puis-je obtenir le redimensionnement de l'écran en FireMonkey?

En utilisant C++ Builder v. 10.2.3, je veux centrer un TForm qui est redimensionné. Pour ce faire, j'utilise les valeurs TScreen::WorkArea. Cependant, en exécutant le programme sur un système avec une mise à l'échelle de 125% sous Windows 10, le code ne fonctionne pas correctement, car le TForm est mis à l'échelle. Comment puis-je déterminer si une telle mise à l'échelle se produit, puis ajuster en conséquence? Existe-t-il une fonctionnalité intégrée dans FireMonkey pour cela? Je devrais noter qu'avec une mise à l'échelle > 100% dans Windows 10, les valeurs TForm::TPosition ne semblent pas fonctionner correctement - par exemple, en le réglant sur ScreenCenter semble avoir un problème similaire, où il n'est pas réellement centré.

2voto

Hans Points 1450

Cette fonction retournera l'échelle de l'écran, c'est-à-dire 1.25 si vous utilisez un scaling de 125% sur Windows:

function GetScreenScale: Single;
var ScreenService: IFMXScreenService;
begin
  Result := 1;
  if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then
    Result := ScreenService.GetScreenScale;
end;

Notez que sur Mac, les seules échelles d'écran possibles sont 1.0 (non-retina) et 2.0 (retina). Cependant, sur Mac, les valeurs retournées par TScreen sont déjà mises à l'échelle, donc aucune correction n'est nécessaire.

1voto

Anthony Burg Points 282

L'équivalent C++ de la réponse de Hans est

double GetScreenScale ()
{
    double value = 1.0;
    _di_IFMXScreenService screenService;
    if (TPlatformServices::Current->SupportsPlatformService (__uuidof (IFMXScreenService), &screenService))
        value = screenService->GetScreenScale ();
    return value;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X