次の方法で共有


CFont::CreateFont

更新 : 2007 年 11 月

指定された特性で CFont オブジェクトを初期化します。

BOOL CreateFont(
   int nHeight,
   int nWidth,
   int nEscapement,
   int nOrientation,
   int nWeight,
   BYTE bItalic,
   BYTE bUnderline,
   BYTE cStrikeOut,
   BYTE nCharSet,
   BYTE nOutPrecision,
   BYTE nClipPrecision,
   BYTE nQuality,
   BYTE nPitchAndFamily,
   LPCTSTR lpszFacename 
);

パラメータ

  • nHeight
    フォントの高さを (論理単位で) 指定します。詳細については、Windows SDK の LOGFONT 構造体の lfHeight メンバを参照してください。パラメータ nHeight の絶対値は、デバイス単位に変換後 16,384 を超えることはできません。高さを比較するときは、フォント マッパは常に、要求サイズを超えない最大サイズのフォントを探します。すべてのフォントが大きすぎるときは、その中で一番小さなサイズのフォントを探します。

  • nWidth
    フォント内の文字の平均の幅を (論理単位で) 指定します。nWidth が 0 のときは、デバイスの縦横比は、利用できるフォントの整数化された縦横比に合わせられ、その両者の差の絶対値が最も近いフォントを探します。

  • nEscapement
    傾斜方向とディスプレイ面の x 軸との角度を (0.1 度単位で) 指定します。傾斜角度は、最初と最後の文字の原点を結ぶ線です。角度は x 軸から反時計回りに計測します。詳細については、Windows SDK の LOGFONT 構造体の lfEscapement メンバを参照してください。

  • nOrientation
    文字の基線と x 軸との角度を (0.1 度単位で) 指定します。角度は y 方向が下向きの座標系では x 軸から反時計回りに、y 方向が上向きの座標系では時計回りに計測します。

  • nWeight
    文字の太さ (1/1000 ピクセル単位) を指定します。詳細については、Windows SDK の LOGFONT 構造体の lfWeight メンバを参照してください。この値は近似値です。実際の外観はタイプフェイスに依存します。いくつかのフォントは、FW_NORMALFW_REGULAR、および FW_BOLD の太さしか持っていません。FW_DONTCARE が指定されたときは、既定の太さが使われます。

  • bItalic
    フォントがイタリックかどうかを指定します。

  • bUnderline
    フォントに下線を引くかどうかを指定します。

  • cStrikeOut
    フォントの文字に取り消し線を引くかどうかを指定します。0 以外の値が設定されたときは、フォントに取り消し線を引くことを意味します。

  • nCharSet
    フォントの文字セットを指定します。値の一覧については、Windows SDK の LOGFONT 構造体の lfCharSet メンバを参照してください。

    OEM 文字セットはシステムに依存します。

    別の文字セットを使ったフォントがシステムに存在することもあります。アプリケーションで不明な文字セットが使用されている場合は、そのフォントを使用する文字列の変換または解釈はできません。出力するデバイス ドライバに直接、文字列を渡します。

    フォント マッパは、DEFAULT_CHARSET 値を使いません。フォントの名前やサイズが論理フォントに対して十分に許容できる値を指定するために、アプリケーションではこの値を使うことができます。指定された名前のフォントが存在しないときは、指定したフォントの代用として、任意の文字セットからのフォントを使用できます。予想外の結果にならないように、アプリケーションでは DEFAULT_CHARSET の使用は控えた方がよいでしょう。

  • nOutPrecision
    希望する出力精度を指定します。出力精度は、フォントの高さ、幅、文字の向き、傾斜、ピッチなどと、出力をどの程度まで一致させるかを定義します。値の一覧および詳細については、Windows SDK の LOGFONT 構造体の lfOutPrecision メンバを参照してください。

  • nClipPrecision
    希望するクリッピング精度を指定します。クリッピング精度は、その一部がクリッピング領域外にある文字をクリップする方法を定義します。値の一覧については、Windows SDK の LOGFONT 構造体の lfClipPrecision メンバを参照してください。

    埋め込み読み取り専用フォントを使うには、アプリケーションは CLIP_ENCAPSULATE を指定する必要があります。

    デバイス フォント、TrueType フォント、ベクタ フォントを正しく回転させるには、OR 演算子を使って CLIP_LH_ANGLES とその他の任意の nClipPrecision 値を組み合わせる必要があります。CLIP_LH_ANGLES ビットが設定されているときは、すべてのフォントの回転は座標系の向きが左回りか右回りかに依存します。座標系の向きについてはパラメータ nOrientation の説明を参照してください。CLIP_LH_ANGLES が設定されていないときは、デバイス フォントは常に反時計回りに回転されますが、その他のフォントの回転は座標系の向きに依存します。

  • nQuality
    フォントの出力品質を指定します。出力品質は、GDI が論理フォントの属性と実際の物理フォントの属性との一致を行うときの方法を指定します。値の一覧については、Windows SDK の LOGFONT 構造体の lfQuality メンバを参照してください。

  • nPitchAndFamily
    フォントのピッチとファミリを指定します。値の一覧および詳細については、Windows SDK の LOGFONT 構造体の lfPitchAndFamily メンバを参照してください。

  • lpszFacename
    フォントのタイプフェイス名を指定した NULL で終わる文字列へのポインタまたは CString オブジェクトです。この文字列の長さは 30 文字を超えることはできません。現在利用できるフォントを列挙するには、Windows の EnumFontFamilies 関数を使用できます。lpszFacenameNULL のときは、GDI はデバイスに依存しないタイプフェイスを使います。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

その後、フォントは任意のデバイス コンテキストのフォントとして選択できます。

CreateFont 関数は、Windows GDI フォントを新しく作るわけではありません。単に、GDI の物理フォントの中から利用するフォントに最も近いフォントを選択するだけです。

アプリケーションは、論理フォントを作成するときにこれらのパラメータのほとんどに既定の設定を使うことができます。必ず値を指定しなければならないパラメータは nHeight と lpszFacename です。nHeight と lpszFacename がアプリケーションで設定されなかったときは、作成される論理フォントはデバイスに依存したものになります。

CreateFont 関数を使って作成された CFont オブジェクトを使い終わったら、最初にデバイス コンテキストからフォントを選択して、それから CFont オブジェクトを削除します。

使用例

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

// Initializes a CFont object with the specified characteristics. 
CFont font;
VERIFY(font.CreateFont(
   12,                        // nHeight
   0,                         // nWidth
   0,                         // nEscapement
   0,                         // nOrientation
   FW_NORMAL,                 // nWeight
   FALSE,                     // bItalic
   FALSE,                     // bUnderline
   0,                         // cStrikeOut
   ANSI_CHARSET,              // nCharSet
   OUT_DEFAULT_PRECIS,        // nOutPrecision
   CLIP_DEFAULT_PRECIS,       // nClipPrecision
   DEFAULT_QUALITY,           // nQuality
   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
   _T("Arial")));                 // lpszFacename

// Do something with the font just created...
CClientDC dc(this);  
CFont* def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font.  Delete the font object.
font.DeleteObject(); 

必要条件

ヘッダー : afxwin.h

参照

参照

CFont クラス

階層図

CFont::CreateFontIndirect

CFont::CreatePointFont

CreateFont

EnumFontFamilies

EnumFonts

その他の技術情報

CFont のメンバ