現在我們有了透明視窗,那麼所有控制項也應該是透明的。
控制項透明,原理其實很簡單,就是把父控制項的影象複製到自己上面即可。例如,常用的方法是給父控制項傳送背景重畫的訊息,同時把自己的dc傳遞過去:
sendmessage(parent.handle, wm_erasebkgnd, dc, 0);
tctrl(parent).paintcontrols(dc, nil);
這種方法對於非自己設計的**視窗也有效,但缺點是會因為父視窗重畫造成閃爍。
buffer := tbitmap.create;
buffer.width := width;
buffer.height := height;
//複製底部
buffer.canvas.brush.color:=form1.m_backcolor;
buffer.canvas.fillrect(clientrect);
buffer.canvas.copyrect(clientrect,form1.m_backbmp.canvas,rect(left+xframwidth,top+xtitleheight,left+xframwidth+width,top+xtitleheight+height));
效果如下:
pngimage for delphi7點
整理 控制項透明
設定richedit背景透明,效果還可以,但是設定memo和edit等時效果不是很理想。與csdn社群。提供兩種方法,其實兩種方法大同小異。第一種方法 richedit1.brush.style bsclear setwindowlong richedit1.handle,gwl exstyle,g...
winform 控制項透明
要實現c winform中的控制項與背景的透明,可以通過設定控制項的backcolor屬性為transparent,同時設定其父控制項。因為在c 中,控制項的透明指對父窗體透明。如果不設定parent屬性,那麼控制項將只對form透明,顯示的時候都會把form的背景色 預設為control 重刷一遍...
透明控制項的製作
最簡單的方法是對映wm erasebkgnd訊息,在訊息處理函式中直接return true 這種方法通過不擦除背景實現,故經常會有其他問題,比如文字從帶下劃線都無下劃線的變化中,因為下劃線不擦除,故始終有下劃線.以下提供一種貼圖的方式實現,即將控制項所在位置的背景截圖,然後貼在控制項表面上,在按鈕...