Page 1 of 1

Large font

Posted: Tue Mar 11, 2008 4:43 pm
by Marco Turco
Salve,
sto lavorando con gli splitter ed ho un problema nel resize in presenza di large font (font di dimensioni maggiori dei classici 96dpi).

Esiste una funzione per sapere se il font di default di Windows è un LargeFont e le dimensioni in dpi ?

Grazie.

Posted: Tue Mar 11, 2008 5:03 pm
by pymsoft
Marco,

LargeFonts()


e per sapere tutti i dati del font per default:

oFont := oMainWnd:oFont


oFont:nInpHeight
oFont:nInpWidth
oFont:nWeight
..
..

Posted: Tue Mar 11, 2008 5:20 pm
by Marco Turco
Grazie.

Però non mi sembra ci sia un sistema per sapere la dimensione in DPI del font, posso solo sapere la dimensione in pixel.

Dato che i font standard sono a 96DPI volevo in presenza di LargeFonts sapere la dimensione del font (in genere è comunque 120DPI) per quindi rapportare in modo corretto le videate.

Al momento bypasso il problema rapportando a 120 in caso di largefonts ma se il cliente si è divertito ad impostare una dimensione intermedia o superiore allora il resize non sarà corretto.

Hai qualche idea per ottenere i DPI ?

Posted: Wed Mar 12, 2008 1:00 pm
by pymsoft
Prova questa funzione:

Code: Select all | Expand

#define LOGPIXELSX         88

function DimFont()

   local hDC, nPixelX

   hDC     = CreateDC( "DISPLAY", "", "" )
   nPixelX = GetDeviceCaps( hDC, LOGPIXELSX )

   DeleteDC( hDC )

//   msginfo( nPixelX )

return nPixelX

Posted: Thu Mar 20, 2008 11:44 am
by Marco Turco
Funziona. Grazie.

Ho riscontrato che la funzione LargeFonts() di fivewin rileva solo largefont "standard" ossia di dimensione 120% dell'originale, ma non è un problema visto che con la tua funzione posso ricavare la dimensione effettiva.

Re:

Posted: Tue Feb 18, 2025 1:42 pm
by Silvio.Falconi
pymsoft wrote: Wed Mar 12, 2008 1:00 pm Prova questa funzione:

Code: Select all | Expand

#define LOGPIXELSX         88

function DimFont()

   local hDC, nPixelX

   hDC     = CreateDC( "DISPLAY", "", "" )
   nPixelX = GetDeviceCaps( hDC, LOGPIXELSX )

   DeleteDC( hDC )

//   msginfo( nPixelX )

return nPixelX
scusa come potrei settare la grandezza dei font a seconda dello schermo

esempio

oFont := TFont():New( "TAHOMA", 0, 16,, )
oBold := TFont():New( "TAHOMA", 0, 14,,.t. )