ezfont.c

来自「这是个人脸识别程序」· C语言 代码 · 共 82 行

C
82
字号
/*---------------------------------------   EZFONT.C -- Easy Font Creation               (c) Charles Petzold, 1996  ---------------------------------------*/#include <windows.h>#include <string.h>#include <math.h>#include "ezfont.h"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 ;     }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?