創建幾何畫筆時出現“需要的資源無法得到”警告對話框。
原因: 創建幾何畫筆時候總是出現“需要的資源無法得到”的警告信息,發現原因是,設置了PS_USERSTYLE, 並且沒有設置CPen( intnPenStyle, intnWidth, const LOGBRUSH*pLogBrush, intnStyleCount
= 0, const DWORD*lpStyle = NULL );
的後兩個參數。 或者, 沒有設置PS_USERSTYLE, 而設置了上述函數的後兩個參數。
創建方形畫筆的一個示例:
- DWORD penFlags=PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL;
- LOGBRUSH lb;
- lb.lbStyle=BS_SOLID;
- lb.lbColor=RGB(100, 200, 200);
- lb.lbHatch=HS_VERTICAL;
- CPen tmpPen(penFlags, 20, &lb);
DWORD penFlags=PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL;
LOGBRUSH lb;
lb.lbStyle=BS_SOLID;
lb.lbColor=RGB(100, 200, 200);
lb.lbHatch=HS_VERTICAL;
CPen tmpPen(penFlags, 20, &lb);
方形畫筆與圓形畫筆的不同:
- // 設置邏輯畫刷
- LOGBRUSH logBrush;
- logBrush.lbStyle = BS_SOLID;
- logBrush.lbColor = RGB(10, 20, 100);
- logBrush.lbHatch = HS_CROSS;
- int x1 = 100, y = 100, x2 = 400;
- int i = 0;
- // 使用方形畫筆繪製各種樣式的直線
- for (i = 0; i < 5; ++i)
- {
- CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL, 20, &logBrush);
- pDC->SelectObject(&pen);
- pDC->MoveTo(x1, y + i * 40);
- pDC->LineTo(x2, y + i * 40);
- pen.DeleteObject();
- }
- x1 = 500, x2 = 800;
- // 使用圓形畫筆創建各種樣式的直線
- for (i = 0; i < 5; ++i)
- {
- CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_ROUND | PS_JOIN_BEVEL, 20, &logBrush);
- pDC->SelectObject(&pen);
- pDC->MoveTo(x1, y + i * 40);
- pDC->LineTo(x2, y + i * 40);
- pen.DeleteObject();
- }
// 設置邏輯畫刷
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID;
logBrush.lbColor = RGB(10, 20, 100);
logBrush.lbHatch = HS_CROSS;
int x1 = 100, y = 100, x2 = 400;
int i = 0;
// 使用方形畫筆繪製各種樣式的直線
for (i = 0; i < 5; ++i)
{
CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_SQUARE | PS_JOIN_BEVEL, 20, &logBrush);
pDC->SelectObject(&pen);
pDC->MoveTo(x1, y + i * 40);
pDC->LineTo(x2, y + i * 40);
pen.DeleteObject();
}
x1 = 500, x2 = 800;
// 使用圓形畫筆創建各種樣式的直線
for (i = 0; i < 5; ++i)
{
CPen pen(i | PS_GEOMETRIC | PS_ENDCAP_ROUND | PS_JOIN_BEVEL, 20, &logBrush);
pDC->SelectObject(&pen);
pDC->MoveTo(x1, y + i * 40);
pDC->LineTo(x2, y + i * 40);
pen.DeleteObject();
}
運行結果: