界面加載其實沒有自己想的那麼複雜:
如果想做一個和window自帶掃雷程序一模一樣的界面。可以借用一些工具來得到一些基本的量,比如各個矩形框的大小,它們由那些線條組成,線條的寬度等等,然後對窗口塊的各個組成部分進行劃分,並且得到它們的大小,在驗證比對之後,將這一系列的數字做成一串宏。用於之後的引用
對於本次的掃雷界面
先看寬度,從左到右,寬度依次由一條線寬爲3的白條a,一段寬爲5的背景b,一段線寬爲3的深色線條c,雷區d,一段線寬爲3的白色線條e,一段寬爲5的背景f
這裏的線條a可通過dc.FillSolidRect來完成,包含c和e的矩形其實可以通過連續三次的Draw3DRect來完成,這個函數通過對一個矩形的左上和右下使用不同深淺的顏色來實現3D效果。左上深右下淺即爲凹 左上淺右下深即爲凸
在知道了Draw3DRect之後,我們再來看高度:
一條線寬3的白條
一段高5的未使用區
一個小3D矩形,矩形邊寬爲2(即連續調用兩次)
一段未使用區
一個大3D矩形,邊寬3
未使用區
在理解了窗口的組成後可以繪製外殼:
至於矩形內部的東西主要是貼圖下面會講到
1.準備相關位圖資源 按照一定的規律擺放
2.根據位圖資源的排列順序定義一系列的宏 這些宏對應的位圖最好剛好能夠通過宏的值乘上單位位圖大小來得到
比如
宏的實現:
3. 這樣我們就能很方便的通過以下代碼將雷方塊狀態對應的位圖加載到窗口:
4.數字區貼圖代碼類似,這裏面爲了保持程序的簡單,直接用像素點單位使用了數字(數字位圖的大小:13*23):
5.對於笑臉區,它實際上只是一個位圖,我們通過對它的貼圖以及一些簡單的3D效果來模擬按鈕
總結: 這裏的界面繪製主要是對Draw3DRect和FillSolidRect的配合使用的熟悉以及簡單貼圖程序的準備工作。要達到一模一樣的效果,需要多實驗,多比較,可以用一些像素點偵查工具(截圖,Spy++,WinCrap等等)
http://download.csdn.net/detail/wudaijun/4709630