C Winform 實現自定義半透明遮罩層介紹

2021-09-06 21:19:36 字數 2276 閱讀 7917

在網頁中通過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...