我正在尝试在某些事件发生时在整个表单上绘制一个半透明图层,并在此半透明图层前面显示提示(类似于启用了UAC的Windows Vista / 7中的效果)
起初我试图使用自定义的半透明面板,但这似乎根本不起作用。因此,我现在尝试使用表单上的opacity属性在表单中使用子表单。但是,当这种半透明形式添加到主窗体的控件并显示时,它会失去透明度。
在半透明层实际上不是主要形式的组件的时刻,我有一个hacky工作,然后透明度工作,但显然这不是理想的,可能会导致各种问题更进一步。
另外,为了进一步复制事物,我想要包含表单的表单不能被制作成Mdi Parent(如果这会有所帮助),因为它本身包含在多个表单的制表符控件中。
基本上任何可以帮助我在表格的其余部分得到一个半透明的“黑暗”层并且提示在顶部的任何东西都是理想的,我不太关心它是如何实现的。
感谢。
答案 0 :(得分:0)
您可以使用半透明背景创建无边框表单:
Private Sub button1_Click(sender As Object, e As EventArgs)
Dim f As New Form2()
f.WindowState = FormWindowState.Normal
f.StartPosition = FormStartPosition.Manual
f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
f.TransparencyKey = Color.Magenta
f.Bounds = Me.Bounds
f.ShowDialog()
End Sub
在Form2的绘画事件中,您可以使用填充画笔将其设置为半透明:
Private Sub Form2_Paint(sender As Object, e As PaintEventArgs)
Dim hb = New HatchBrush(HatchStyle.Percent50, Me.TransparencyKey)
e.Graphics.FillRectangle(hb, Me.DisplayRectangle)
End Sub