CPen::CreatePen

建立一個邏輯化妝產品或幾何畫筆與指定的樣式、寬度和筆刷屬性,並將其附加至 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第一個版本,則為,如果這個值是零,不管對應模式,以裝置單位表示的寬度永遠是以像素為單位)。

    • 對於 CreatePen第二個版本,則為,否則為 nPenStylePS_GEOMETRIC,此寬度 (以邏輯單位為單位。如果 nPenStyle 是 PS_COSMETIC,必須設定這個寬度設定為{1}。

  • crColor
    包含畫筆的 RGB 色彩。

  • pLogBrush
    LOGBRUSH 結構的點。如果 nPenStyle 是 PS_COSMETICLOGBRUSH 結構的 lbColor 成員指定畫筆的色彩,並 LOGBRUSH 結構的 lbStyle 成員必須設定為 BS_SOLID。如果 nPenStylePS_GEOMETRIC,所有成員必須使用指定這個畫筆的筆刷屬性。

  • nStyleCount
    在兩字單位指定長度,則為, lpStyle 陣列。如果不是, nPenStylePS_USERSTYLE,這個值必須為零。

  • lpStyle
    對的兩點數值。第一個值在一個使用者定義樣式指定第一條虛線的長度,第二個值指定第一個空格的長度,依此類推。如果不是, nPenStylePS_USERSTYLE,這個指標必須是 空值

傳回值

如果成功,則為非零值為,則方法會失敗。

備註

CreatePen 第一版中使用指定的樣式、寬度和色彩的畫筆。畫筆之後可以選取做為收到目前筆為所有裝置內容。

具有大於一個寬度的畫筆的像素一定要有 PS_NULLPS_SOLIDPS_INSIDEFRAME 樣式。

如果畫筆有 PS_INSIDEFRAME 樣式和邏輯色彩表中沒有符合色彩的某個色彩時,畫筆繪製一經遞色的色彩。PS_SOLID 筆模式無法用來建立一經遞色的色彩的畫筆。如果畫筆寬度小於或等於為 .,模式 PS_INSIDEFRAMEPS_SOLID 是相同的。

CreatePen 第二版初始化具有指定的樣式、寬度和筆刷屬性的一個邏輯化妝產品或幾何畫筆。一支化妝畫筆的寬度永遠為;幾何一支畫筆的寬度 (以全局單位表示一律指定。在應用程式建立邏輯畫筆後,就可以選取畫筆選取到裝置內容中呼叫 CDC::SelectObject 函式。在畫筆選取到裝置內容後,就可以用它來繪製直線和曲線。

  • 如果 nPenStyle 是 PS_COSMETICPS_USERSTYLE,在 lpStyle 陣列的輸入樣式單位指定虛線的長度和空格。樣式單位由畫筆來繪製線條的裝置所定義。

  • 如果 nPenStyle 是 PS_GEOMETRICPS_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);   

需求

Header: afxwin.h

請參閱

參考

CPen 類別

階層架構圖

CPen::CreatePenIndirect

CPen::CPen

CGdiObject::DeleteObject

LOGBRUSH