Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Preguntar por el % aumento fuente (https://www.clubdelphi.com/foros/showthread.php?t=96291)

newtron 06-07-2023 14:23:28

Preguntar por el % aumento fuente
 
Buenas a tod@s.


Tengo un pequeño problema cuando el windows de turno está "tuneado" para que escale las fuentes a un porcentaje distinto al 100% que es el que viene por defecto.


¿Hay alguna forma de consultar el valor de ese porcentaje en el windows?


Gracias y un saludo.

Casimiro Notevi 06-07-2023 17:06:30

A ver si sirve:
Código Delphi [-]
uses
  Windows, Graphics;

function GetFontScalePercentage: Integer;
var
  DC: HDC;
  LogPixelsY: Integer;
begin
  // Obtiene el contexto del dispositivo de pantalla
  DC := GetDC(0);
  try
    // Obtiene la resolución vertical en píxeles por pulgada (PPP)
    LogPixelsY := GetDeviceCaps(DC, LOGPIXELSY);
  finally
    // Libera el contexto del dispositivo de pantalla
    ReleaseDC(0, DC);
  end;

  // Calcula el porcentaje de tamaño de las fuentes
  Result := MulDiv(LogPixelsY, 100, 96);
end;

newtron 07-07-2023 09:32:59

Antonio.


Gracias por tu respuesta pero la variable LogPixelsY me coge valor 0. ¿Alguna idea de por qué puede ser?


Gracias y un saludo.

newtron 07-07-2023 09:59:01

Ok, ya está.


Me "chirriaba" un poco que el nombre de la variable fuera igual que el segundo parámetro del GetDeviceCaps así que lo he cambiado y ahora si pilla el valor.


Gracias y un saludo.

Casimiro Notevi 07-07-2023 14:31:32

Es que cero es porque no está aumentada, tiene tamaño predeterminado.
Si aumentas las fuentes verás que en lugar de cero devolverá el porcentaje aumentado.
Esa es la teoría :)

newtron 07-07-2023 16:37:25

Pues en la práctica si no está aumentado el tamaño de fuente devuelve el valor 100 y si está aumentada al 125% devuelve 125. Eso es lo que yo quería poder consultar.


Pero te digo que en el ejemplo que pasas devuelve 0 mientras no cambies el nombre de la variable "LogPixelsY" por otro. Eso si lo tengo comprobado.


Gracias y un saludo.

Casimiro Notevi 07-07-2023 19:00:46

^\||/^\||/^\||/

pgranados 23-01-2024 23:54:53

Cita:

Empezado por newtron (Mensaje 552009)
Me "chirriaba" un poco que el nombre de la variable fuera igual que el segundo parámetro del GetDeviceCaps así que lo he cambiado y ahora si pilla el valor.

Hola, he copiado la función y modifique el nombre de la variable pero sigo obteniendo 0, lo probé en Delphi 10.4, puedes pasarme la función por favor? Saludos

newtron 24-01-2024 09:33:48

Cita:

Empezado por pgranados (Mensaje 554123)
Hola, he copiado la función y modifique el nombre de la variable pero sigo obteniendo 0, lo probé en Delphi 10.4, puedes pasarme la función por favor? Saludos


Claro.


Código Delphi [-]
function GetFontScalePercentage: Integer;
var
  DC: HDC;
  LogPixelsY_: Integer;
begin
  // Obtiene el contexto del dispositivo de pantalla
  DC := GetDC(0);
  try
    // Obtiene la resolución vertical en píxeles por pulgada (PPP)
    LogPixelsY_ := GetDeviceCaps(DC, LOGPIXELSY);
  finally
    // Libera el contexto del dispositivo de pantalla
    ReleaseDC(0, DC);
  end;

  // Calcula el porcentaje de tamaño de las fuentes
  Result := MulDiv(LogPixelsY_, 100, 96);
end;


Saludos.

pgranados 24-01-2024 16:44:08

Muchas gracias, ya funciono :D


La franja horaria es GMT +2. Ahora son las 22:26:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi