MFC Static控制項背景透明時文字覆蓋重影

2021-05-26 06:31:16 字數 664 閱讀 3142

通過對映onctlcolor訊息,而後在該函式中使用pdc->setbkmode(transparent)使static控制項背景透明時會出現:文字覆蓋重影的問題,當改變控制項的文字就會發生新文字與舊文字重疊的現象。

可以通過以下方式使static控制項文字在透明狀態下改變時不會產生文字重疊問題:

1、由於static控制項的背景已經是透明的了,那麼舊文字應該是畫在static控制項的父視窗上的。

2、在給static控制項設定新文字之後(不是之前!)重新整理父視窗即可。例如:

getdlgitem(idc_static_test)->setwindowtext(_t("北京2008"));�0�2

getdlgitem(idc_static_test)->getparent()->redrawwindow();

idc_static_test為控制項id號。

3、用上面方法重新整理的是整個父視窗客戶區,介面會閃爍,可以只刷static控制項所在的rect區域,就不會閃爍了。

crect rtlbl;

getdlgitem(nid)->getwindowrect(&rtlbl);

screentoclient(&rtlbl); //轉到客戶端介面

invalidaterect(&rtlbl);//最後重新整理對話方塊背景

updatewindow();

MFC Static控制項背景透明時文字覆蓋重影

通過對映onctlcolor訊息,而後在該函式中使用pdc setbkmode transparent 使static控制項背景透明時會出現 文字覆蓋重影的問題,當改變控制項的文字就會發生新文字與舊文字重疊的現象。可以通過以下方式使static控制項文字在透明狀態下改變時不會產生文字重疊問題 1 由...

使控制項擁有透明背景

windows 窗體程式設計 如何 使控制項擁有透明背景 預設情況下,控制項不支援透明背景色。但是,通過使用建構函式中的 control.setstyle 方法,可以讓控制項擁有不透明 透明或半透明的背景色。control 類的 setstyle 方法用於為控制項設定特定的樣式首選項,並可用來啟用或...

QT 設定控制項透明背景

1.對於繼承於qwidget的控制項或是視窗,將整個控制項當做圖形元素,對該圖形元素進行設定透明度效果 include qgraphicsopacityeffect opacityeffect new qgraphicsopacityeffect ui.label setgraphicseffect...