windows核心程式設計--2、windows的畫筆畫刷以及一些簡單的應用
一、前言
????該系列前幾篇:
?????windows核心程式設計--1、使用vs2019編寫第一個win32專案
二、相關工具
????IDE:vs2019
????其他格式圖片轉ico指令碼(貼在文末)
三、實驗要求
????1、改變win32程式標題欄圖示、滑鼠樣式以及工作列圖示。
????2、給選單欄新增一個退出記事本
的子項,並實現該功能。
????3、使用自創的畫筆以及畫刷繪製線、多邊形、橢圓等圖形並填充。
四、實現
????1、使用vs2019建立一個windows桌面應用程式,如下所示:
????2、找到wcex
處,修改wcex.hCursor
屬性,改變滑鼠樣式,這裡改變成IDC_CROSS
????3、在vs2019選單處,開啟檢視-->其他視窗-->資源檢視
,點選其右側Icon(右鍵點選)-->新增資源
,新增ico圖示資源,在程式碼中找到wcex.hIcon
改變其屬性以改變該視窗工作列圖示,找到wcex.hIconSm
改變標題欄的小圖示,如下所示:
????4、在資源檢視中,找到Menu-->IDC_MY
點選,在其左側編輯選單子項和在右下角編輯該子項ID(該ID在我們點選該項時會產生一個這個ID訊息傳給我們的訊息處理函式,以響應使用者),最後在訊息處理函式中的WM_COMMAND
訊息中新增相應的事件處理程式碼,如下所示:
??5、在程式碼中找到WM_PAINT
,新增我們要繪製的圖形,先說一下繪製的基本過程:
????a、首先利用GetDC
或者BeginPaint
函式獲取繪製控制代碼,其中,GetDC
函式有一個引數,為要繪製的視窗控制代碼。
????b、接著利用::CreatePen
函式建立一個自創畫筆,該函式有3個引數,第一個引數為畫筆的形狀,第二個引數為畫筆的粗細,第三個引數為畫筆的顏色,例如HPEN hpen = ::CreatePen(PS_SOLID,2,RGB(138,43,226));
,建立完畫筆後,需要用::SelectObject
函式將該畫筆選入,該函式有兩個引數,第一個引數為我們用GetDC
::SelectObject(hdc,hpen);
。
????c、接著利用::CreateSolidBrush
函式建立一個自創畫刷,該函式只有一個引數,為該畫刷的顏色,例如HBRUSH hbrush = ::CreateSolidBrush(RGB(255,255,0));
,同樣的,建立完畫筆後,需要用::SelectObject
函式將該畫筆選入。
????接著就是利用LineTo
、Arc
等函式繪製圖形,這些api就不再細說了,百度去搜索一些這些api即可,會在文末貼一篇寫得比較全的部落格連結。
五、實驗結果截圖
六、一些連結和圖片轉換程式碼
??繪製圖形api
??圖片轉換程式碼:
????使用說明:python conversion.py -P 要轉換的圖片路徑
實驗程式碼:(命名為不是conversion.py請更改上面相應地方)
import PythonMagick
from optparse import OptionParser
store_position=‘‘
start_position=‘‘
parse = OptionParser()
parse.add_option(‘-P‘,action = ‘store‘,type = ‘string‘,dest = ‘position‘,help = ‘輸入圖片位置‘)
(options,args) = parse.parse_args()
start_position = options.position
x = len(start_position)
store_position = start_position[0:(x - 4)]
store_position += ‘.ico‘
img = PythonMagick.Image(start_position)
img.sample(‘128x128‘)
img.write(store_position)
print(f‘轉換完成!{start_position}已經轉換到了{store_position}‘)