2013-05-11 83 views
2

我想在默認顏色的win32 - PS_DASH/PS_DASHDOT中使用自定義筆。但是,我想根據某些條件在程序主體中更改筆的顏色。根據我迄今閱讀的示例 - 我還沒有遇到自定義筆顏色更改的示例。Win32 - GDI - 更改自定義筆顏色

任何人都可以給我一個如何去做這個例子嗎?

此外 - 任何人都可以澄清 - 如果有可能改變已經創建的自定義筆的寬度?除了缺省創建自定義筆之外,找不到任何此語法。

感謝

參考鏈接我發現: Change GDI pen colour

http://devmaster.net/forums/topic/13685-win32-setdcpencolor-problem/

HPEN dashPen = CreatePen(PS_DASH, 1, RGB(255, 255, 0)); 
HPEN dashDotPen = CreatePen(PS_DASHDOT, 1, RGB(255, 255, 0)); 

    // changing color works with DC_PEN but want something similar for custom pen 
    SelectObject(hdc, GetStockObject(DC_PEN)); 
    SetDCPenColor(hdc, RGB(250, 0, 0)); 
    MoveToEx(hdc, 100, 100, NULL); 
    LineTo(hdc, 200, 200); 


    // Changing of Pen color doesn't seem to work for the custom pen 
    SelectObject(hdc, dashPen); 
    SetDCPenColor(hdc, COLOR_BLUE); 
    MoveToEx(hdc, 150, 150, NULL); 
    LineTo(hdc, 250, 250); 

    SelectObject(hdc, dashDotPen); 
    SetDCPenColor(hdc, COLOR_GRAY); 
    MoveToEx(hdc, 175, 175, NULL); 
    LineTo(hdc, 275, 275); 

    DeleteObject(dashPen); 
    DeleteObject(dashDotPen); 
+1

只需製作一支新筆,輕鬆自在。 – 2013-05-11 13:51:57

+2

目前還不清楚什麼智力模型讓你認爲'SetDCPenColor'改變了DC筆以外的任何其他顏色。 DC筆是唯一一個可以在創建後更改顏色的筆。 (因爲它不是一支筆,而是一支虛擬筆。) – 2013-05-11 13:56:59

+1

感謝您的答覆。我對這個win32編程相對來說比較陌生,並且有一種印象是自定義筆的顏色一旦創建就可以改變。它看起來像在GDI中 - 自定義筆的顏色和寬度都不能在創建後更改。會找到一種替代方法來處理這種情況。 – ejuser 2013-05-11 17:14:09

回答

0

設置DC畫筆顏色改變DC筆的顏色,這不是非此即彼您的自定義筆。

如果要更改定製筆,請使用所需的參數創建一個新的,並調用SelectObject以將其放入DC中,然後調用舊的DestroyObject。

DC筆是一種特殊的筆,用於當您想要一個簡單而堅固的筆,並且能夠輕鬆更改顏色。像DC筆刷一樣,這對於常見的情況很方便,而不是用於修改自定義GDI對象的通用工具。