半透明元件的問題 |
尚未結案
|
leon_sun_1
一般會員 發表:1 回覆:2 積分:0 註冊:2005-06-30 發送簡訊給我 |
由本站作者Liu,Jiun-Jiue大大http://delphi.ktop.com.tw/topic.php?topic_id=81992的文章中介紹如何使用半透明物件的方法。
我使用大大介紹的方式
long wsex = ::GetWindowLongPtr( Form1->Handle, GWL_EXSTYLE ); wsex |= WS_EX_TOOLWINDOW ; wsex &= ~WS_EX_APPWINDOW; ::SetWindowLongPtr(mypanel->Handle, GWL_EXSTYLE, wsex ); ::SetParent(mypanel->Handle , GetDesktopWindow() ); SetWindowLong(mypanel->Handle, GWL_EXSTYLE, GetWindowLon(mypanel->Handle, GWL_EXSTYLE ) ^ WS_EX_LAYERED ^ WS_EX_TRANSPARENT ); ::SetLayeredWindowAttributes(mypanel->Handle, RGB( 0, 0, 0 ), 255 - alpha, LWA_ALPHA ); mypanel->Refresh() ; // 一定要呼叫,否則失敗 ::SetParent(mypanel->Handle , Form1->Handle ); mypanel->Repaint() ; // 一定要呼叫,否則失敗製作半透明的Panel,方法是可行但碰到一個大問題就是當移動表單時表單的大小會自動的放大縮小,也就是會隨著(X,Y)座標大小改變,一直無法解決這個問題,大大在文中也有說到 引言:該Panel的位置卻不會跟著Form移動了 所以你需要自己處理該Panel的位置, 就是如果Form移動的話,Panel的位置你需要自己手動將他移動。我不知所謂自己手動將他移動的意思,因為只要改變了Panel的Left跟Top值就會發生剛剛上面所述表單會自動縮放,有沒有高手大大們知道這是怎麼一回事與怎麼解決這個問題。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |