在網頁中通過div+css實現半透明效果不難,今天我們看看一種在winfrom中實現的方法:
效果圖如下,正常時:
顯示遮罩層時:
自定義遮罩層控制項的原始碼如下:
view row code
1using system;
2using system.drawing;
3using system.windows.forms;
4using system.componentmodel; 56
namespace myopaquelayer 7
3031
public myopaquelayer(int alpha, bool isshowloadingimage) 32
50}
5152
53protected override void dispose(bool disposing) 54
61}
62base.dispose(disposing);
63}
6465
///
66/// 自定義繪製窗體
67///
68///
69protected override void onpaint(system.windows.forms.painteventargs e) 70
83else 84
88base.onpaint(e);
89vlblcontrolwidth = this.size.width;
90vlblcontrolheight = this.size.height;
91e.graphics.drawrectangle(labelborderpen, 0, 0, vlblcontrolwidth, vlblcontrolheight);
92e.graphics.fillrectangle(labelbackcolorbrush, 0, 0, vlblcontrolwidth, vlblcontrolheight);
93}
9495
96protected override createparams createparams 97
104}
105106
/* 107
* [category("myopaquelayer"), description("是否使用透明,預設為true")]
108* 一般用於說明你自定義控制項的屬性(property)。
109* category用於說明該屬性屬於哪個分類,description自然就是該屬性的含**釋。
110*/
111[category("myopaquelayer"), description("是否使用透明,預設為true")]
112public bool transparentbg
113
118set
119
123}
124125
[category("myopaquelayer"), description("設定透明度")]
126public int alpha
127
132set
133
137}
138}
139}
opaquecommand的方法:showopaquelayer(顯示遮罩層)和hideopaquelayer(隱藏遮罩層)
view row code
1using system;
2using system.windows.forms; 34
namespace 載入中 5
27this.m_opaquelayer.enabled = true;
28this.m_opaquelayer.visible = true;
29}
30catch
31}
3233
///
34/// 隱藏遮罩層
C winform 窗體自定義
今天看了篇技術帖,原來是可以不通過工具欄的現有工具進行布局的。以前 當我要有2個窗體的時候,就會拖拽2個 然後進行編輯。現在才明白,只要寫成類也是可以使用的。開啟乙個窗體的檔案,發現當自動新建個窗體時,其實是系統幫忙做了很多的準備工作。例如designer.cs中就有 initializecompo...
C WinForm 載入自定義控制項閃爍問題
winform載入多個自定義控制項時,會出現很嚴重的閃爍問題,很卡,一塊一塊的載入 像開啟網頁時,網路很卡的那種感覺 簡直沒法忍受。在網上搜尋了好久,網上大部分的方法是一下4種,但是都不能有效的解決問題。1.將doublebuffered 設定 true,用雙快取處理form介面內容載入,可以提高頁...
自定義Toast實現自定義Toast布局
平時我們使用toast的時候都是這樣的一種方法 toast toast toast.maketext context,duration 現在我們來自定義下toast的布局,首先看下toast建立時的源 public static toast maketext context context,char...