ExtCreatePen 関数 (wingdi.h)
ExtCreatePen 関数は、指定されたスタイル、幅、ブラシ属性を持つ論理的な化粧品ペンまたは幾何学的ペンを作成します。
構文
HPEN ExtCreatePen(
[in] DWORD iPenStyle,
[in] DWORD cWidth,
[in] const LOGBRUSH *plbrush,
[in] DWORD cStyle,
[in] const DWORD *pstyle
);
パラメーター
[in] iPenStyle
型、スタイル、エンド キャップ、結合属性の組み合わせ。 各カテゴリの値は、ビットごとの OR 演算子 ( | ) を使用して結合されます。
ペンの種類には、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
|
ペンは幾何学的です。 |
|
ペンは化粧品です。 |
ペン スタイルには、次のいずれかの値を指定できます。
エンド キャップは、幾何学的なペンに対してのみ指定されます。 終了キャップには、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
|
エンド キャップは丸型です。 |
|
エンド キャップは正方形です。 |
|
エンド キャップはフラットです。 |
結合は、幾何学的なペンに対してのみ指定されます。 結合には、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
|
結合は面取りされます。 |
|
結合は、 SetMiterLimit 関数によって設定された現在の制限内にある場合に miter されます。 この制限を超えると、結合は面取りされます。 |
|
結合は丸めです。 |
[in] cWidth
ペンの幅。 dwPenStyle パラメーターがPS_GEOMETRICの場合、幅は論理単位で指定されます。 dwPenStyle がPS_COSMETIC場合、幅は 1 に設定する必要があります。
[in] plbrush
LOGBRUSH 構造体へのポインター。 dwPenStyle がPS_COSMETICの場合、lbColor メンバーはペンの色を指定し、lpStyle メンバーを BS_SOLID に設定する必要があります。 dwPenStyle がPS_GEOMETRICされている場合は、すべてのメンバーを使用してペンのブラシ属性を指定する必要があります。
[in] cStyle
lpStyle 配列の DWORD 単位の長さ。 dwPenStyle がPS_USERSTYLEされていない場合、この値は 0 である必要があります。
スタイル数は 16 に制限されています。
[in] pstyle
配列へのポインター。 最初の値はユーザー定義スタイルの最初のダッシュの長さを指定し、2 番目の値は最初のスペースの長さを指定します。 dwPenStyle がPS_USERSTYLEされていない場合、このポインターは NULL である必要があります。
線の描画中に lpStyle 配列を超えた場合、ポインターは配列の先頭にリセットされます。 これが発生し、 dwStyleCount が偶数の場合、ダッシュとスペースのパターンが繰り返されます。 ただし、 dwStyleCount が奇数の場合、ポインターがリセットされるとパターンが反転します。 lpStyle の最初の要素はスペースを参照し、2 番目の要素はダッシュなどを参照します。
戻り値
関数が成功した場合、戻り値は論理ペンを識別するハンドルです。
関数が失敗した場合は、0 を返します。
解説
幾何学的ペンは任意の幅を持ち、ディザーやパターンなどのブラシの属性を持つことができます。 化粧品用ペンは幅が 1 ピクセルのみで、単色である必要がありますが、通常、化粧品用ペンは幾何学的なペンよりも高速です。
幾何学的ペンの幅は、常にワールド単位で指定されます。 化粧品ペンの幅は常に 1 です。
エンド キャップと結合は、ジオメトリ ペンに対してのみ指定されます。
アプリケーションは、論理ペンを作成した後、 SelectObject 関数を呼び出すことによって、そのペンをデバイス コンテキストに選択できます。 ペンをデバイス コンテキストに選択した後、線と曲線を描画するために使用できます。
dwPenStyle がPS_COSMETICでPS_USERSTYLE場合、lpStyle 配列内のエントリは、スタイル単位でダッシュとスペースの長さを指定します。 スタイル単位は、ペンを使用して線を描画するデバイスによって定義されます。
dwPenStyle がPS_GEOMETRICでPS_USERSTYLE場合、lpStyle 配列内のエントリは、ダッシュとスペースの長さを論理単位で指定します。
dwPenStyle がPS_ALTERNATEされている場合、スタイル単位は無視され、他のすべてのピクセルが設定されます。
lplb が指す LOGBRUSH 構造体の lbStyle メンバーがBS_PATTERN場合、その構造体の lbHatch メンバーが指すビットマップを DIB セクションにすることはできません。 DIB セクションは、 CreateDIBSection によって作成されたビットマップです。 そのビットマップが DIB セクションの場合、 ExtCreatePen 関数は失敗します。
アプリケーションで指定したペンが不要になった場合は、 DeleteObject 関数を呼び出してペンを削除する必要があります。
Icm: ペンの作成時に色の管理は行われません。 ただし、カラー管理は、ペンが ICM 対応デバイス コンテキストに選択されたときに実行されます。
例
例については、「ペンの 使用」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wingdi.h (Windows.h を含む) |
Library | Gdi32.lib |
[DLL] | Gdi32.dll |