耍花招系列, 怎麼把自己的AP透明化 |
|
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
API函數SetLayeredWindowAttributes,它有4個參數,分別是hwnd、crKey、bAlpha和dwFlags。hwnd指操作的窗口的句柄,crKey是指定要透明的顏色值,是和第四個參數配合使用的(當第四個參數為LWA_COLORKEY),bAlpha是透明參數,當bAlpha為0時窗口全透明,當值為255時為正常的窗口。比如要Form1透明的話,相應的語句是SetLayeredWindowAttributes(form1.Handle, 0, 100, LWA_ALPHA),不過這個API只能在Win2000下用,不支援Win98。
|
Jack0323
初階會員 發表:22 回覆:70 積分:28 註冊:2002-03-13 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
插花一下
Delphi 6 的Form 就有AlphaBlend 與 AlphaBlendValue 二個屬性可調整Alpha值,使Form 呈現半透明或透明的效果。追蹤其屬性,得知此屬性包裝了Win API的方法,就是lcsboy 兄所提的部份 小小範例:
procedure TForm1.FormCreate(Sender: TObject); begin self.AlphaBlend :=True; with ScrollBar1 do begin Max:=255; Min:=0; Position :=255; end; end; procedure TForm1.ScrollBar1Change(Sender: TObject); begin self.AlphaBlendValue :=ScrollBar1.Position ; end;追蹤AlphaBlendValue 屬性結果 procedure TCustomForm.SetLayeredAttribs; const cUseAlpha: array [Boolean] of Integer = (0, LWA_ALPHA); cUseColorKey: array [Boolean] of Integer = (0, LWA_COLORKEY); var AStyle: Integer; begin if not (csDesigning in ComponentState) and (Assigned(SetLayeredWindowAttributes)) and HandleAllocated then begin AStyle := GetWindowLong(Handle, GWL_EXSTYLE); if FAlphaBlend or FTransparentColor then begin if (AStyle and WS_EX_LAYERED) = 0 then SetWindowLong(Handle, GWL_EXSTYLE, AStyle or WS_EX_LAYERED); SetLayeredWindowAttributes(Handle, FTransparentColorValue, FAlphaBlendValue, cUseAlpha[FAlphaBlend] or cUseColorKey[FTransparentColor]); end else begin SetWindowLong(Handle, GWL_EXSTYLE, AStyle and not WS_EX_LAYERED); RedrawWindow(Handle, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN); end; end; end;BCB 6的Form 我想應該也是有此屬性才是 ps:小弟我從Delphi 6 開始入門,至於之前版本的BCB 或是Delphi 若無此屬性,就參考lcsboy 版主的範例實現吧 --【 |
job11183
一般會員 發表:0 回覆:1 積分:0 註冊:2002-06-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |