整理 控制項透明

2021-06-15 18:29:21 字數 1051 閱讀 1312

設定richedit背景透明,效果還可以,但是設定memo和edit等時效果不是很理想。****與csdn社群。

提供兩種方法,其實兩種方法大同小異。

第一種方法

richedit1.brush.style := bsclear;

setwindowlong(richedit1.handle,gwl_exstyle,getwindowlong(richedit1.handle, gwl_exstyle) or ws_ex_transparent);

第二種方法

type

ttransparentgroupbox = class(tcustomgroupbox)

private

procedure wmerasebkgnd(var msg: twmerasebkgnd); message wm_erasebkgnd;

protected

procedure createparams(var params: tcreateparams); override;

published

//....

end;

implementation

procedure ttransparentgroupbox.createparams(var params: tcreateparams);

begin

inherited createparams(params);

params.exstyle := params.exstyle or ws_ex_transparent;

end;

procedure ttransparentgroupbox.wmerasebkgnd(var msg: twmerasebkgnd);

begin

setbkmode(msg.dc, transparent);

msg.result := 1;

end;

api函式解釋如下:

getwindowlong :從指定視窗的結構中取得資訊

setwindowlong:

在視窗結構中為指定的視窗設定資訊

透明面板控制項設計系列(五) 透明控制項

現在我們有了透明視窗,那麼所有控制項也應該是透明的。控制項透明,原理其實很簡單,就是把父控制項的影象複製到自己上面即可。例如,常用的方法是給父控制項傳送背景重畫的訊息,同時把自己的dc傳遞過去 sendmessage parent.handle,wm erasebkgnd,dc,0 tctrl pa...

winform 控制項透明

要實現c winform中的控制項與背景的透明,可以通過設定控制項的backcolor屬性為transparent,同時設定其父控制項。因為在c 中,控制項的透明指對父窗體透明。如果不設定parent屬性,那麼控制項將只對form透明,顯示的時候都會把form的背景色 預設為control 重刷一遍...

透明控制項的製作

最簡單的方法是對映wm erasebkgnd訊息,在訊息處理函式中直接return true 這種方法通過不擦除背景實現,故經常會有其他問題,比如文字從帶下劃線都無下劃線的變化中,因為下劃線不擦除,故始終有下劃線.以下提供一種貼圖的方式實現,即將控制項所在位置的背景截圖,然後貼在控制項表面上,在按鈕...