用Win32 API建立不規則視窗

2021-04-13 12:21:24 字數 1451 閱讀 6718

win32 api

支援建立不規則視窗,現在很多軟體使用這個技術,如:quicktime,windows media player 7等。 a

b使用api建立不規則視窗主要有兩種方式,即向量形狀疊加(布林運算)和點陣圖區域兩種。無論哪種方式,都可以實現上面兩圖的效果。在編寫這樣的視窗**前,我們必須清楚要建立的視窗的形狀是否複雜,如b的視窗很複雜,為極不規則的視窗,很難使用向量形狀疊加的方式建立,那麼可以使用區域,指定點陣圖的透明色實現;而a是圓角矩形,使用簡單的向量形狀疊加即可。之所以這樣,是為了執行效率考慮,對於普通的不規則視窗,向量疊加方式速度比較快。當然,位圖區域方式可以建立任何形狀的視窗,如果你不需要考慮執行效率(實際兩種方式速度差異很小),那麼不必考慮向量形狀疊加的辦法,直接看位圖區域的例子即可。

a.向量疊加方式建立不規則視窗

例1:簡單的視窗區域設定,使用圓角矩形

1、hrgn hrgn=createroundrectrgn(0,0,200,200,20,20);//建立圓角矩形區域

2、setwindowrgn(hrgn,true);//將建立的區域設定為視窗區域

例2:多個區域疊加(布林運算)

1、hrgn hrgn1=createroundrectrgn(0,0,200,200,20,20);//建立圓角矩形區域

2、hrgn hrgn2=createrectrgn(10,10,20,20);//建立矩形區域

3、hrgn hrgn; combinergn(hrgn,hrgn1,hrgn2,rgn_diff);

//使用區域1減區域2,生成新區域hrgn(可選的引數有加,減,交等,詳見msdn)

4、setwindowrgn(hrgn,true);//將建立的區域設定為視窗區域 b.

:1.95 kb (2,002

位元組)

1、hbitmap hbmp=(hbitmap)loadimage(應用程式控制代碼, 位**件名, image_bitmap, 寬度, 高度, lr_loadfromfile);

//載入乙個位圖,該位圖中的某個特定顏色將被作為透明區域處理

2、hrgn hrgn=bitmaptoregion(hbmp,rgb(255,0,0),0);//呼叫位圖轉換為區域的函式,透明色為紅色,第三個引數為公差,為0即只將紅色設定為透明色。如果公差為1,意味著與給定透明色的紅綠藍三色數值的差距在1範圍內的顏色也將被作為透明色處理。

3、setwindowrgn(hrgn,true);//將建立的區域設定為視窗區域

說明:關於bitmaptoregion函式,它的功能就是將位圖轉換為區域,原理來自api: extcreateregion,該函式使用rgndata結構中的資料建立rgn,本函式就是分析點陣圖的各個畫素點數,根據它們填充rgndata結構,然後建立rgn的。

由於不規則視窗專題比較簡單,沒有提供完整的範例,b方法的關鍵是bitmaptoregion函式,所以只提供了該函式的**。如果還有不清楚的地方或者想要完整的範例,

Win32API不規則視窗製作

一 前述 也許您在其他軟體中經常看到下面這樣的介面,除了感嘆視覺設計的絢麗外,也注意到了和其他軟體的不同,視窗不是正規的正方形。這就是傳說中的非規則窗體,也叫多邊形視窗 不規則窗體 名字夠俗的 2.建立乙個程式 為了方便學習起見,我們並不推薦您建立乙個空工程從頭作起,直接建立乙個win32專案的例項...

用Win32 API實現序列通訊

2003 7 9 7 56 18 pcvc.wangxi 閱讀次數 30453 串列埠是常用的計算機與外部序列裝置之間的資料傳輸通道,由於序列通訊方便 易行,所以應用廣泛。我們可以利用windows api 提供的通訊函式編寫出高可移植性的 序列通訊程式。在win16中,可以利用open m clo...

掃雷程式 win32API

1 已實現功能 基本的掃雷方塊的展開,方塊周圍雷數的計算,方塊的標旗,勝負的判斷,難度的更改 2 未實現功能 控制台顯示剩餘標旗數量和當前所用時間,選單項的豐富 3 基本原理 使用一張二維int表儲存每個方格的數字資訊,其中9表示雷 將整個雷區 客戶區 按難度分割成方格,每個方格為乙個靜態控制項,用...