次の方法で共有


CPen::CPen

更新 : 2007 年 11 月

CPen オブジェクトを構築します。

CPen( );
CPen(
   int nPenStyle,
   int nWidth,
   COLORREF crColor 
);
CPen(
   int nPenStyle,
   int nWidth,
   const LOGBRUSH* pLogBrush,
   int nStyleCount = 0,
   const DWORD* lpStyle = NULL 
);

パラメータ

  • nPenStyle
    ペンのスタイルを指定します。最初の構文のコンストラクタのパラメータには、次のいずれかの値を指定できます。

    • PS_SOLID   実線のペンを作成します。

    • PS_DASH   破線のペンを作成します。ペン幅がデバイス単位 1 以下の場合だけ有効です。

    • PS_DOT   点線のペンを作成します。ペン幅がデバイス単位 1 以下の場合だけ有効です。

    • PS_DASHDOT   一点破線のペンを作成します。ペン幅がデバイス単位 1 以下の場合だけ有効です。

    • PS_DASHDOTDOT   二点破線のペンを作成します。ペン幅がデバイス単位 1 以下の場合だけ有効です。

    • PS_NULL   null のペンを作成します。

    • PS_INSIDEFRAME   外接する四角形を指定する Windows の GDI の出力関数 (たとえば、EllipseRectangleRoundRectPieChord メンバ関数) で作成される閉じた図形の枠の内部に直線を描画するペンを作成します。外接する四角形を指定しない Windows の GDI 出力関数 (たとえば、LineTo メンバ関数) で作成される図形のときは、ペンの描画領域は図形の枠に制限されません。

    CPen コンストラクタの 2 番目の構文では、型、スタイル、端点キャップ、結合属性の組み合わせを指定します。各カテゴリの値はビットごとの OR 演算子 (|) を使って組み合わせます。ペンの型は次のいずれかです。

    • PS_GEOMETRIC   ジオメトリック ペンを作成します。

    • PS_COSMETIC   コスメティック ペンを作成します。

      CPen コンストラクタの 2 番目の構文の nPenStyle に指定するペン スタイルに次のスタイルが追加されます。

    • PS_ALTERNATE   1 つおきにピクセルを設定するペンを作成します。(このスタイルは、コスメティック ペンだけに適用できます。

    • PS_USERSTYLE   ユーザーが提供するスタイル配列を使うペンを作成します。

      端点キャップは次のいずれかの値になります。

    • PS_ENDCAP_ROUND   端点キャップは円になります。

    • PS_ENDCAP_SQUARE   端点キャップは四角形になります。

    • PS_ENDCAP_FLAT   端点キャップは平面になります。

      結合は次のいずれかの値になります。

    • PS_JOIN_BEVEL   斜め結合になります。

    • PS_JOIN_MITER   SetMiterLimit 関数で設定した現在の制限内の場合、マイター結合になります。制限を超えたときは斜め結合になります。

    • PS_JOIN_ROUND   円結合になります。

  • nWidth
    ペンの幅を指定します。

    • コンストラクタの最初の構文では、この値が 0 のときはマップ モードとは無関係に常にデバイス単位で 1 ピクセルの幅になります。

    • コンストラクタの 2 番目の構文では、nPenStyle が PS_GEOMETRIC のときは、幅を論理単位で指定します。nPenStyle が PS_COSMETIC の場合、幅を 1 に設定します。

  • crColor
    ペンの色を RGB カラー値で指定します。

  • pLogBrush
    LOGBRUSH 構造体へのポインタ。nPenStyle が PS_COSMETIC の場合、LOGBRUSH 構造体の lbColor メンバはペンの色を指定します。また、LOGBRUSH 構造体の lbStyle メンバを BS_SOLID に設定する必要があります。nPenStyle が PS_GEOMETRIC のときは、ペンのブラシ属性を指定するためにすべてのメンバを使います。

  • nStyleCount
    lpStyle 配列の長さをダブルワード単位で指定します。nPenStyle が PS_USERSTYLE ではないときは、この値には 0 を指定します。

  • lpStyle
    ダブルワード値の配列へのポインタ。最初の値は、ユーザー定義スタイルの点線の点の部分の長さを指定し、2 番目の値はスペースの部分の長さを指定します。以下同じように続けます。nPenStyle が PS_USERSTYLE でないときは、このポインタには NULL を指定します。

解説

引数なしのコンストラクタを使ったときは、構築された CPen オブジェクトを CreatePenCreatePenIndirect、または CreateStockObject メンバ関数で初期化する必要があります。

引数付きのコンストラクタを使った場合は、オブジェクトを初期化する必要はありません。引数付きのコンストラクタでエラーが発生したときは、例外をスローできます。引数なしのコンストラクタは常に正常終了します。

使用例

// Create a solid red pen of width 2.
CPen myPen1(PS_SOLID, 2, RGB(255,0,0));

// Create a geometric pen.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID;
logBrush.lbColor = RGB(0,255,0);
CPen myPen2(PS_DOT|PS_GEOMETRIC|PS_ENDCAP_ROUND, 2, &logBrush);

必要条件

ヘッダー : afxwin.h

参照

参照

CPen クラス

階層図

CPen::CreatePen

CPen::CreatePenIndirect

CGdiObject::CreateStockObject

その他の技術情報

CPen のメンバ