Does anybody knows how to convert font size to pixel format??

plaease i beg you!!
Posted on 2004-02-11 13:37:35 by Ateneo
// Easy Font Creation. (c) Charles Petzold, 1996

HFONT EzCreateFont (HDC hdc, char * szFaceName, int iDeciPtHeight,
int iDeciPtWidth, int iAttributes, BOOL fLogRes)
{
FLOAT cxDpi, cyDpi ;
HFONT hFont ;
LOGFONT lf ;
POINT pt ;
TEXTMETRIC tm ;

SaveDC (hdc) ;

SetGraphicsMode (hdc, GM_ADVANCED) ;
ModifyWorldTransform (hdc, NULL, MWT_IDENTITY) ;
SetViewportOrgEx (hdc, 0, 0, NULL) ;
SetWindowOrgEx (hdc, 0, 0, NULL) ;

if (fLogRes)
{
cxDpi = (FLOAT) GetDeviceCaps (hdc, LOGPIXELSX) ;
cyDpi = (FLOAT) GetDeviceCaps (hdc, LOGPIXELSY) ;
}
else
{
cxDpi = (FLOAT) (25.4 * GetDeviceCaps (hdc, HORZRES) /
GetDeviceCaps (hdc, HORZSIZE)) ;

cyDpi = (FLOAT) (25.4 * GetDeviceCaps (hdc, VERTRES) /
GetDeviceCaps (hdc, VERTSIZE)) ;
}

pt.x = (int) (iDeciPtWidth * cxDpi / 72) ;
pt.y = (int) (iDeciPtHeight * cyDpi / 72) ;

DPtoLP (hdc, &pt, 1) ;

lf.lfHeight = - (int) (fabs (pt.y) / 10.0 + 0.5) ;
lf.lfWidth = 0 ;
lf.lfEscapement = 0 ;
lf.lfOrientation = 0 ;
lf.lfWeight = iAttributes & EZ_ATTR_BOLD ? 700 : 0 ;
lf.lfItalic = iAttributes & EZ_ATTR_ITALIC ? 1 : 0 ;
lf.lfUnderline = iAttributes & EZ_ATTR_UNDERLINE ? 1 : 0 ;
lf.lfStrikeOut = iAttributes & EZ_ATTR_STRIKEOUT ? 1 : 0 ;
lf.lfCharSet = 0 ;
lf.lfOutPrecision = 0 ;
lf.lfClipPrecision = 0 ;
lf.lfQuality = 0 ;
lf.lfPitchAndFamily = 0 ;

strcpy (lf.lfFaceName, szFaceName) ;

hFont = CreateFontIndirect (&lf) ;

if (iDeciPtWidth != 0)
{
hFont = (HFONT) SelectObject (hdc, hFont) ;

GetTextMetrics (hdc, &tm) ;

DeleteObject (SelectObject (hdc, hFont)) ;

lf.lfWidth = (int) (tm.tmAveCharWidth *
fabs (pt.x) / fabs (pt.y) + 0.5) ;

hFont = CreateFontIndirect (&lf) ;
}

RestoreDC (hdc, -1) ;

return hFont ;
}
Posted on 2004-02-11 22:46:58 by P2M
This does a decent job, it returns a negative number for use with the CreateFont nHeight parameter...

PointToPixel FRAME fSize

LOCAL hDC :D

invoke GetDC,NULL
mov [hDC],eax
invoke GetDeviceCaps,[hDC],LOGPIXELSY
push eax
invoke ReleaseDC,NULL,[hDC]
pop eax
mul D[fSize]
mov ecx,72
xor edx,edx
div ecx
neg eax
ret
ENDF
Posted on 2004-02-12 01:08:19 by donkey
Thanks both :alright:

i will snap it into my code.
Posted on 2004-02-12 08:52:17 by Ateneo