<Return[E]><Top>

ExtCreatePen

Declare Function Api_ExtCreatePen& Lib "gdi32" Alias "ExtCreatePen" (ByVal dwPenStyle&, ByVal dwWidth&, ByRef lplb As LOGBRUSH, ByVal dwStyleCount&, ByRef lpStyle&)

Declare Function ExtCreatePen Lib "gdi32" (ByVal dwPenStyle As Long, ByVal dwWidth As Long, lplb As LOGBRUSH, ByVal dwStyleCount As Long, lpStyle As Long) As Long

指定されたスタイル、幅、ブラシ属性を持つペンを作成する。

パラメータ
dwPenStyle
    ペンのタイプ、スタイル、端点キャップ、結合属性を指定する。各カテゴリからフラグを選択し、OR 演算子(|)を使って組み合わせる。
    ペンのタイプとして、次の値のいずれかを指定する。

    値                             

意味                                      

    PS_GEOMETRIC

ジオメトリックペンを作成する。

    PS_COSMETIC

コスメティックペンを作成する。

    ペンのスタイルとして、次の値のいずれかを指定する。

    値                             

意味                                                                                                                               

    PS_ALTERNATE

Windows NT/2000:1 ピクセルおきに描画を行うペンを作成する。(コスメティックペンのみ。)

    PS_SOLID

実線のペンを作成する。

    PS_DASH

破線のペンを作成する。

Windows 95:このスタイルは、ジオメトリックの線ではサポートされていない。

Windows 98:サポートされていない。

    PS_DOT

点線のペンを作成する。

Windows 95/98:このスタイルは、ジオメトリックの線ではサポートされていない。

    PS_DASHDOT

一点鎖線のペンを作成する。

Windows 95:このスタイルは、ジオメトリックの線ではサポートされていない。

Windows 98:サポートされていない。

    PS_DASHDOTDOT

二点鎖線のペンを作成する。

Windows 95:このスタイルは、ジオメトリックの線ではサポートされていない。

Windows 98:サポートされていない。

    PS_NULL

空(不可視)のペンを作成する。描画は行われない。

    PS_USERSTYLE

Windows NT/2000:lpStyle パラメータでユーザーが指定したスタイル配列を使って、ペンを作成する。

    PS_INSIDEFRAME

実線のペンを作成する。境界長方形を指定する任意の GDI 描画関数でこのペンを使うと、ペンの幅が考慮され、

その長方形に完全に収まるように図形が縮小される。ジオメトリックペンでのみ有効である。

    端点キャップ(エンドキャップとも呼びます)は、ジオメトリックペンを作成する場合にのみ指定できる。

    端点キャップとして、次の値のいずれかを指定する。

    値                                   

意味                                 

    PS_ENDCAP_ROUND

端点キャップを丸くする。

    PS_ENDCAP_SQUARE

端点キャップを四角にする。

    PS_ENDCAP_FLAT

端点キャップを平らにする。

    接合属性は、ジオメトリックペンを作成する場合にのみ指定できる。接合属性として、次の値のいずれかを指定する。

    値                             

意味                                                                                                                                           

    PS_JOIN_BEVEL

ベベル接合を行う(接合部分が平らになる)。

    PS_JOIN_MITER

接合が、SetMiterLimit 関数で設定した範囲内にある場合、マイター接合を行う(接合部分が尖る)。

 

この範囲を超えている場合、ベベル接合を行う。

    PS_JOIN_ROUND

ラウンド接合を行う(接合部分が丸くなる)。

    Windows 95:PS_ENDCAP_ROUND、PS_ENDCAP_SQUARE、PS_ENDCAP_FLAT、PS_JOIN_BEVEL、PS_JOIN_MITER、

    PS_JOIN_ROUND の各スタイルは、ジオメトリックペンでパスを描画するときにのみ機能を果たす。
dwWidth
    ペンの幅を指定する。dwPenStyle パラメータで PS_GEOMETRIC を指定した場合、論理単位で幅を指定する。

    dwPenStyle パラメータで PS_COSMETIC を指定した場合、dwWidth パラメータで 1 を指定しなければならない。
lplb
    1 個の LOGBRUSH 構造体へのポインタを指定する。dwPenStyle パラメータで PS_COSMETIC を指定した場合は、lbColor メンバでペン

    の色、lbStyle メンバで BS_SOLID を指定する。dwPenStyle パラメータで PS_GEOMETRIC を指定した場合、すべてのメンバを使って、

    ブラシを使う場合と同様にペンの属性を指定する。
dwStyleCount
    lpStyle 配列のサイズを DWORD 単位で指定する。dwPenStyle パラメータで PS_USERSTYLE を指定しなかった場合、dwStyleCount

    パラメータで 0 を指定してください。
lpStyle
    カスタムの線のスタイルを保持している、1 つの配列へのポインタを指定する。最初の要素で最初の破線の長さ、2 番目の要素で最初の

    空白の長さを指定し、以下同様に破線と空白の長さを交互に指定する。dwPenStyle パラメータで PS_USERSTYLE を指定しなかった場

    合、lpStyle パラメータで NULL を指定してください。


戻り値
    関数が成功すると、論理ペンのハンドルが返る。
    関数が失敗すると、0 が返る。
    Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使う。

 

解説
    ジオメトリックペンでは任意の幅を指定でき、ディザやパターンなど、ブラシのすべての属性も使える。

    コスメティックペンの幅は常に 1 ピクセルで、純色(混合色ではないベタの色)でなければならない。

    通常は、ジオメトリックペンよりもコスメティックペンの方が高速に描画を行う。
    ジオメトリックペンの幅は、必ずワールド単位(論理単位)で指定する。コスメティックペンの幅は、常に 1 である。
    端点キャップと接合を指定できるのは、ジオメトリックペンを指定した場合だけである。
    論理ペンを作成した後、SelectObject 関数を使って、デバイスコンテキストでそのペンを選択できる。その後、そのペンを使って直線と曲線

    を描画できる。
    ペンが不要になったら、DeleteObject 関数を使って削除する。