[英]C# Transparent Panels?
所以我通過使用 GDI 制作游戲引擎來挑戰自己。
到目前為止,我已經設法使用 GDI 制作了一些游戲 - 但是我最近遇到了一個問題,我需要一些幫助。
我已經實現了一個 UI 系統,並發現 GDI Translate
功能移動整個畫布。 隨后,我的所有鼠標坐標都發生了偏移,導致我的 UI 系統無法按預期工作。
問題:有沒有辦法讓Panel 在Paint 方法上透明?
我試圖將清晰的顏色設置為透明,但這只會使面板變黑。
我無法指出這方面的來源,但我現在做了一些測試,我的解釋如下:
當我將面板的背景顏色設置為 Colors.FromArgb(50,0,0,0) 時,這會起作用,因為每當我更改表單的背景顏色時,面板就會繼續存在,然后表單的顏色就會透過面板。
但是:位於此面板后面的其他控件並非一直可見。 我確信出於性能原因,控件的呈現僅在用戶可見時才會發生,這意味着它們不會被其他控件覆蓋。 所以窗體的顏色是透明的,因為透明顏色實際上是有效的,但是面板后面的控件沒有被渲染,因為它們被其他控件覆蓋。
您必須編寫自己的控件:
public class TransparentPanel : Panel
{
protected override CreateParams CreateParams
{
get
{
var cp = base.CreateParams;
cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT
return cp;
}
}
}
這告訴窗口,該控件是透明的,並且在該控件后面按 z 順序排列的控件也必須呈現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.