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 演算子 ( | ) を使用して結合されます。

ペンの種類には、次のいずれかの値を指定できます。

説明
PS_GEOMETRIC
ペンは幾何学的です。
PS_COSMETIC
ペンは化粧品です。
 

ペン スタイルには、次のいずれかの値を指定できます。

説明
PS_ALTERNATE
ペンは、他のすべてのピクセルを設定します。 (このスタイルは、化粧品のペンにのみ適用されます。
PS_SOLID
ペンは実線です。
PS_DASH
ペンは破線で表示されます。
PS_DOT
ペンが点線で表示されます。
PS_DASHDOT
ペンには、ダッシュとドットが交互に表示されます。
PS_DASHDOTDOT
ペンには、ダッシュと二重ドットが交互に表示されます。
PS_NULL
ペンは見えません。
PS_USERSTYLE
ペンは、ユーザーによって提供されるスタイル配列を使用します。
PS_INSIDEFRAME
ペンは実線です。 外接する四角形を受け取る GDI 描画関数でこのペンを使用すると、図形のサイズが縮小され、ペンの幅を考慮して外接する四角形に完全に収まります。 これは、幾何学的なペンにのみ適用されます。
 

エンド キャップは、幾何学的なペンに対してのみ指定されます。 終了キャップには、次のいずれかの値を指定できます。

説明
PS_ENDCAP_ROUND
エンド キャップは丸型です。
PS_ENDCAP_SQUARE
エンド キャップは正方形です。
PS_ENDCAP_FLAT
エンド キャップはフラットです。
 

結合は、幾何学的なペンに対してのみ指定されます。 結合には、次のいずれかの値を指定できます。

説明
PS_JOIN_BEVEL
結合は面取りされます。
PS_JOIN_MITER
結合は、 SetMiterLimit 関数によって設定された現在の制限内にある場合に miter されます。 この制限を超えると、結合は面取りされます。
PS_JOIN_ROUND
結合は丸めです。

[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

関連項目

CreateDIBSection

Createpen

CreatePenIndirect

DeleteObject

GetObject

Logbrush

ペン関数

ペンの概要

Selectobject

SetMiterLimit