1、繪制線條的利器-畫筆
正如我們的标題所說的那樣,畫筆是繪制線條用的,也就是說如果我們想要從一個點到另一個點之間畫一條線段,那麼我們就要選擇畫筆工具,我們在windows程式設計中都是使用的句柄來全局辨別資源,那麼我們的畫筆也對應有畫筆資源,這裡圖圖給你透露一下,這就是hpen,一般人我不告訴他哦。市場的畫筆有千千萬,我們要選擇一支我們喜歡的畫筆,通過調用createpen函數就可以建立出我們自己的畫筆了,createpen函數原型如下
hpen createpen(
int
npenstyle, //畫筆款式
nwidth, //畫筆畫出的線條寬度
colorref
crcolor //畫筆畫出的線條顔色
);
npenstyle是我們想要的畫筆的款式,也就是代表着我們畫出來的線條是什麼樣子的,其各個取值代表意思如下:
a、ps_solid
繪制的線條為實線
b、ps_dash
用短線表示的虛線,也就是這個樣子__ __ __ __ __ __
c、ps_dot
用點表示的虛線(......)
d、ps_dashdot
用短線和點互相來回間隔表示的虛線 (__ . __ . __ .)
e、ps_dashdotdot 用短線間隔兩個點來表示的虛線,舉例如後
__ . . __ . . __
f、 ps_null 這個表示我們畫出的畫筆不可見
nwidth代表的線條寬度這裡就不詳說了,下面有介紹的是colorref類型的線條顔色,我們一般使用rgb宏來初始化線條顔色,rgb(r, g, b)裡面的三個參數分别代表三原色的值,即red,green和blue,每種顔色的值都是從取0-255,舉個例子,colorref
color = rgb(255, 0, 0),這裡我們定義了一個顔色對象,這個對象代表的顔色是紅色,因為其他的都是0,我們可以想象一下,如果我們都取0,那麼我們得到的是什麼顔色呢,對,你沒有猜錯,那就是黑色,這時候就相當于什麼顔色都沒有,那當然就是黑色啦,同樣的,如果我們3個參數都取255,聰明的你一定一眼就看出來那就是白色。
這裡給大家示範一下建立畫筆
hpen hpen = null;//定義一個畫筆對象
hpen = createpen(ps_solid, 20, rgb(255, 255, 255);//建立一支能畫紅色線條畫筆
2、給畫布裝潢的土豪油漆刷-畫刷
上面給大家介紹了畫筆工具,這個是用于在視窗裡畫出一條線條,如果我們想要像工匠一樣在牆上用刷子一次繪制一個矩形區域怎木辦呢,那麼我們就要用到這個神器了,那就是我們的土豪刷,同樣的我們也有相應的畫刷句柄來定義畫刷對象,那就是hbrush,大家看了關于畫筆的介紹後也猜到了gdi一定有關于畫刷建立的函數,這裡我們使用兩個建立函數,一個就是createsolidbrush,這是建立一個實心畫刷,也就是我們把要刷的位置用相應的顔色填滿,函數原型如下
hbrush createsolidbrush(
crcolor
);
大家可以看到這個函數隻有唯一的一個參數,那就是我們的實心畫刷顔色,取一個rgb值就ok了。
另外一個建立畫刷的函數呢就是createhatchbrush,這個函數建立的畫刷不是把一個矩形區域填滿,而是
用一些線段來在裡面填充陰影,就像下面的這樣
我們把createhatchbrush函數原型貼出來
hbrush
createhatchbrush(
fnstyle, //陰影模式
clrref //前景色顔色值
fnstyle枚舉如下:
hs_bdiagonal 表示45度向上,從左至右的陰影(/////);
hs_cross 水準和垂直交叉陰影(+++++);這個就是我上面畫的那個圖形例子
hs_diagcross 45度交叉陰影(xxxxx);
hs_fdiagonal 45度向下,自左至右陰影(\\\\\\);
hs_horizontal 水準陰影(-----);
hs_vertical 垂直陰影(|||||)。
vertical horizontal cross diagcross fdiagonal bdiagonal 實心畫刷
clrref是我們前景色顔色值,這個是代表矩形裡面陰影線條的顔色,要注意不是邊界框的顔色,從上圖就可以看出,邊界框的顔色是之前我們定義的畫筆的顔色。
好了,下面給大家看下示例程式及運作結果
程式運作效果如下