超炫!任何元件變成AlphaBlend半透明特效 [NSkin.AlphaBlend] |
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
本文經原作者(enter2004)刪除
麻煩版主將此文移除謝謝!
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。 就在快要消失的瞬間,希望能再飛高一點, 但是回神時總是慢了一步。
附加檔案:81992_nskinalpha.zip
編輯記錄
enter2004 重新編輯於 2007-08-05 16:03:57, 註解 無‧
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
enter2004 你好
這麼優秀的作品 不知道是否願意為這作品加上KTOP個人版權的宣告
就如我底下的簽名檔一般 再為KTOP加速一下 謝謝 網友大大
請問你的作品,文章等 是否願意貢獻 給於KTOP網站,日後使用於DVD/VCD發售
如果可以請在簽名檔上宣告個人授權
以加速KTOP網站日後DVD/VCD資料的誕生
台灣災難都是事後算帳
無人飛行載具(Unmanned Aerial Vehicle,UAV)為什麼沒大量應用於救災行列 絲絲有2種
.net有很多種 一種治眼睛是MS 另一種治腦筋是Borland
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
請大家把使用此函示庫得到的結果圖片po上來分享看看 因為這個可以產生許多有趣的結果
很多方面可以應用!
。 -------------------------------------------
ps:回應conundrum: 個人授權此編譯過的函示庫(僅NatureSkin.AlphaBlend"第一版")與其範例給KTop,
版權宣告字樣
Copyright(c) 2005-2006 .Author: Liu,Jiun-Jiue.
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。 就在快要消失的瞬間,希望能再飛高一點, 但是回神時總是慢了一步。 |
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
|
babyfish0226
一般會員 發表:9 回覆:82 積分:23 註冊:2002-06-14 發送簡訊給我 |
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
實作方式
希望對Delphi使用者有幫助! (1) 建立一個TPanel,建立一個TImage,且該TImage的Parent設為該TPanel
(2) 然後將該TPanel的Parent設為Windows桌面的Handle
(3) 然後對該Panel刷上本身Form的相關的EX_STYLE屬性
(4) 然後該Panel及擁有與視窗同樣的AlphaBlend屬性
(5) 然後該Panel即可使用SetLayeredWindowAttributes API進行修改呼叫
(6) 然後將該Panel的Parent重新設為Form1
但是該Panel的位置卻不會跟著Form移動了
所以你需要自己處理該Panel的位置,
就是如果Form移動的話,Panel的位置你需要自己手動將他移動。
最重要的一點是第三項,這是成功的關鍵。
讓Windows以為該Panel就是一個Form
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, GetWindowLong(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() ; // 一定要呼叫,否則失敗最後 謝謝各位!
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。 就在快要消失的瞬間,希望能再飛高一點, 但是回神時總是慢了一步。 |
cheng_Chin
一般會員 發表:1 回覆:8 積分:1 註冊:2004-08-25 發送簡訊給我 |
|
babyfish0226
一般會員 發表:9 回覆:82 積分:23 註冊:2002-06-14 發送簡訊給我 |
|
babyfish0226
一般會員 發表:9 回覆:82 積分:23 註冊:2002-06-14 發送簡訊給我 |
procedure TForm1.FormCreate(Sender: TObject);
var alpha: integer;
begin
alpha := 100;
image1.Parent := panel1;
SetWindowLong(panel1.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
panel1.ParentWindow := getdesktopwindow;
SetWindowLong(panel1.Handle, GWL_EXSTYLE, GetWindowLong(panel1.Handle, GWL_EXSTYLE) or WS_EX_LAYERED or WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(panel1.Handle, RGB(0, 0, 0), 255 - alpha, LWA_ALPHA);
panel1.Refresh;
panel1.ParentWindow := form1.Handle;
panel1.Repaint;
end; 目前的設定是沒反應....
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
|
homanfai
一般會員 發表:6 回覆:8 積分:2 註冊:2005-12-04 發送簡訊給我 |
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
現在修改成=>
把程式跑兩次看看! 請Delphi的用戶再試試看! alpha := 100;
image1.Parent := panel1;
SetWindowLong(panel1.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
panel1.ParentWindow := getdesktopwindow;
SetWindowLong(panel1.Handle, GWL_EXSTYLE, GetWindowLong(panel1.Handle, GWL_EXSTYLE) or WS_EX_LAYERED or WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(panel1.Handle, RGB(0, 0, 0), 255 - alpha, LWA_ALPHA);
panel1.Refresh;
panel1.ParentWindow := form1.Handle;
panel1.Repaint;
panel1.Left= form1.Left;
panel1.Top=panel1.Top; alpha := 100;
image1.Parent := panel1;
SetWindowLong(panel1.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
panel1.ParentWindow := getdesktopwindow;
SetWindowLong(panel1.Handle, GWL_EXSTYLE, GetWindowLong(panel1.Handle, GWL_EXSTYLE) or WS_EX_LAYERED or WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(panel1.Handle, RGB(0, 0, 0), 255 - alpha, LWA_ALPHA);
panel1.Refresh;
panel1.ParentWindow := form1.Handle;
panel1.Repaint;
panel1.Left= form1.Left;
panel1.Top=panel1.Top; 而且放在Form的OnActivate裡面 發表人 - enter2004 於 2005/12/11 18:34:12
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。 就在快要消失的瞬間,希望能再飛高一點, 但是回神時總是慢了一步。 |
freecat
一般會員 發表:0 回覆:2 積分:0 註冊:2003-10-23 發送簡訊給我 |
|
wildbattle
一般會員 發表:7 回覆:12 積分:3 註冊:2005-12-08 發送簡訊給我 |
|
enter2004
初階會員 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
|
wildbattle
一般會員 發表:7 回覆:12 積分:3 註冊:2005-12-08 發送簡訊給我 |
|
miyada
一般會員 發表:6 回覆:7 積分:2 註冊:2008-11-02 發送簡訊給我 |
大家好 我是BCB的用戶 5.0版的
我也把這個用在我的程式上 但是編譯時候出現 [Linker Error] Unresolved external 'NAlphaBlend::~NAlphaBlend()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\新資料夾\UNIT1.OBJ [Linker Error] Unresolved external 'NAlphaBlend::NAlphaBlend(Forms::TForm *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\新資料夾\UNIT1.OBJ 這是啥原因 我有#include "nskinalpha.h"了阿 還是要把lib指定路徑阿???
------
大家心地都很好 一起來學習吧 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |