Dimensiune reala fonturi

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.

Dimensiune reala fonturi

Mesajde nmg » 03 Feb 2010, 11:32

Pe lung, datele problemei sunt urmatoarele:
Pentru a putea folosind un font, acesta trebuie mai intai creat iar apoi selectat in DC. Avand in vedere faptul ca la crearea fontului, dimensiunile lui sunt specificate in "unitati logice" fara vreo legatura cu vreun DC (device context), la selectarea lui in DC-ului al dispozitivului de afisare, dimensiunile initiale nu mai corespund.

Astfel, de exemplu, pentru un font "arial" creat initial cu inaltimea de "12", ajung la valoarea reala de 122 unitati logice dupa ce fontul a fost selectat in DC (calculate cu GetTextMetrics).

Intrebarea este:
Pagina are inaltimea de x pixeli (MM_TEXT, 1 pixel = 1 unitate logica), cum as putea sa calculez dimensiunile unui font astfel incat sa imi intre y randuri pe pagina ?
nmg
Junior
Junior
 
Mesaje: 25
Membru din: 12 Iul 2007, 07:36

Re: Dimensiune reala fonturi

Mesajde Viorel » 03 Feb 2010, 16:32

Încearcă să converteşti înălţimea paginii din pixeli în unităţi logice folosind funcţia DPtoLP:

Cod: Selectaţi tot
POINT p = { 0, înălţime_pagină_în_pixeli };
::DPtoLP(hdc, &p, 1);


Înălţimea maximă a fontului pentru CreateFont va fi:

Cod: Selectaţi tot
int h = p.y / y;
Viorel
Microsoft MVP
Microsoft MVP
 
Mesaje: 148
Membru din: 13 Iul 2007, 12:26


Înapoi la MFC, ATL, WTL si GDI+.

Cine este conectat

Utilizatorii ce navighează pe acest forum: Yahoo [Bot] şi 1 vizitator