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 の出力関数 (たとえば、Ellipse、Rectangle、RoundRect、Pie、Chord メンバ関数) で作成される閉じた図形の枠の内部に直線を描画するペンを作成します。外接する四角形を指定しない 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 オブジェクトを CreatePen、CreatePenIndirect、または 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