Ver la Versión Completa : Preguntar por el % aumento fuente
newtron
06-07-2023, 14:23:28
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:
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
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
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.
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.