也說說c++builder中的不規則窗體的實現 (轉)

amyz發表於2007-10-17
也說說c++builder中的不規則窗體的實現 (轉)[@more@]

  最近看了《C++Builder中不規則窗體的顯示》2000-09-07· 陶志才·yesky(http://www.powerba.com/develop/bcb/article/20000916007.htm),自己去做了,發現原來它上面的方法不是最簡便的。所以在這裡和大家討論一下。

  首先上文中的內容我就不再重複了。我要改變的關鍵是他選取圖片非白色區域的方法十分繁瑣。而且我曾經試過幾張圖,都會變得不倫不類的,我也很難說出為什麼。在我迷茫的時候我發現原來c++ builder6有自己的一些方法可以非常輕易的完成不規則窗體的設計。下面是我的程式碼:

void __fastcall TForm1::FormCreate(T *Sender)
{
  Form1->Color=clWhite;
  Form1->TransparentColorValue=clWhite;
  Form1->TransparentColor=true;
  Form1->BorderStyle=bsNone;

/*
Image1->Transparent=true;
//這一行可要可不要,沒有什麼作用

//如果窗體上除了圖片就沒有別的可以顯示的東西,上面的就已經可以了。如果有別的東西就可以使用下面這段程式碼。
HRGN WndRgn,TempRgn;
WndRgn=CreateRectRgn(0,30,Image1->Width,Image1->Height);
//設定矩形區域的
//顯示不規則窗體
SetWindowRgn(Handle,WndRgn,true);
//SetWindowPos(Handle,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

//去除窗體本來顏色。會出問題,這是為什麼呢?希望各位大俠指點。
Form1->Color=clBtnFace;
Form1->TransparentColorValue=clBtnFace;

//如果是將以上程式碼防在butten裡面,做出來的窗體易懂的時候有邊緣白線這是為什麼?
*/

這樣我們簡直可以完全不用書寫程式碼只是更改窗體屬性就完成不規則窗體的設計。而且這樣應該更加高效。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977187/,如需轉載,請註明出處,否則將追究法律責任。

相關文章