2013-05-27 89 views

回答

1

Winforms中的文本以alpha爲0呈現。這使得它在透明玻璃上繪製時透明。所以你會看到背景顏色,而不是你選擇的ForeColor。

在玻璃上繪製文字是很麻煩的,因爲文字的背景沒有很好的定義,所以你不能很容易地將它正確地消除鋸齒。請注意,屏幕截圖顯示了Windows如何解決該問題,窗口標題中的文本具有乳白色背景,從而確保了抗鋸齒功能能夠正確地將字母混合到背景中。

這也是你需要做的。您可以使用帶有DTT_GLOWSIZE標誌選項的pinvoke,DrawThemeTextEx()來繪製文本。訪問pinvoke.net獲取所需的聲明或使用this project。不要忘記提供一個回退,所以這個窗口在舊版本的Windows上看起來還不錯。和更新的版本,玻璃已不再適用於Windows 8.

+0

繪製文本的作品,但很難繪製窗體中的每一個文本,但無論如何感謝。是的,我爲每個Windows版本都有不同的方法。 –

+0

爲什麼文本會以0的alpha值呈現?或者它是一些遺留的渲染,沒有alpha渲染,只是默認爲零? – Triynko

+0

是的,GDI是24位的。 –