指定されたスタイル、幅、およびブラシの属性の論理化粧品または幾何学ペンを作成し、CPen のオブジェクトにアタッチします。
BOOL CreatePen(
int nPenStyle,
int nWidth,
COLORREF crColor
);
BOOL CreatePen(
int nPenStyle,
int nWidth,
const LOGBRUSH* pLogBrush,
int nStyleCount = 0,
const DWORD* lpStyle = NULL
);
パラメーター
nPenStyle
ペンのスタイルを指定します。使用できる値の一覧については、CPen の nPenStyle のコンストラクターのパラメーターを参照してください。nWidth
ペンの幅を指定します。CreatePenの最初のバージョンの場合、この値が0の場合、デバイス単位の幅はマップ モードに関係なく1ピクセル、常にです。
CreatePenの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である場合はゼロである必要があります。lpStyle
DWORD値の配列へのポインター。最初の値はユーザー定義の最初の破線スタイルの長さ、2番目の値を指定します最初の空白の長さなどを指定します。このポインターは nPenStyle が PS_USERSTYLEである [NULL] である必要があります。
戻り値
メソッドが失敗した場合、またはがゼロ成功した場合は。
解説
CreatePen の最初のバージョンが、指定されたスタイル、幅、色のペンを初期化します。ペンは任意のデバイス コンテキストの現在のペンとして選択できます。
大きなあるは、ペン幅が1ピクセル PS_NULL、PS_SOLID、または PS_INSIDEFRAME のスタイルが存在する必要があります。
ペンに PS_INSIDEFRAME のスタイルと論理カラー テーブルの色と一致しない色がの場合、はディザー カラー ペンで描画します。PS_SOLID のペンのスタイルはディザー カラー ペンを作成することはできません。ペン幅が1.以下である場合、スタイル PS_INSIDEFRAME は PS_SOLID と同じものです。
CreatePen の2番目のバージョンは、指定されたスタイル、幅、およびブラシの属性を持つ論理化粧品や幾何学ペンを初期化します。化粧品のペン幅は常に1です; ジオメトリック ペン幅は世界単位で常に指定されます。アプリケーションは論理的なペンを作成したら、デバイス コンテキストに CDC::SelectObject 関数を呼び出すことによって、ペン選択できます。ペンはデバイス コンテキストに選択した直線と曲線を描画に使用できます。
nPenStyle が PS_COSMETIC と PS_USERSTYLE場合、lpStyle の配列のエントリはスタイルの単位でダッシュと空白の長さを指定します。スタイルの単位は線の描画に使用されるデバイスがペンによって定義されます。
nPenStyle が PS_GEOMETRIC と PS_USERSTYLE場合、lpStyle の配列のエントリは論理単位でダッシュと空白の長さを指定します。
nPenStyle が PS_ALTERNATE場合、スタイルの単位は無視され、そのほかのすべてのピクセルが設定されます。
アプリケーションは、特定のペンを必要としない場合は、CGdiObject::DeleteObject のメンバー関数を呼び出すか、CPen のオブジェクトを破棄するため、リソースは使用しなくなったです。アプリケーションは、ペンがデバイス コンテキストに選択されているときにペンを削除する必要があります。
使用例
CPen myPen1, myPen2;
// Create a solid red pen of width 2.
myPen1.CreatePen(PS_SOLID, 2, RGB(255,0,0));
// Create a geometric pen.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID;
logBrush.lbColor = RGB(0,255,0);
myPen2.CreatePen(PS_DOT|PS_GEOMETRIC|PS_ENDCAP_ROUND, 2, &logBrush);
必要条件
ヘッダー: afxwin.h