如何将面板透明度设置为不透明度为0.我按程序设置面板,它位于视频播放器之上。代码就像这样
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ', AxVLCPlugin21.Click
Dim panelx As New Panel
panelx.Visible = True
panelx.Size = New Size(AxVLCPlugin21.Width, CInt(AxVLCPlugin21.Height / 2))
panelx.BackColor = System.Drawing.Color.Transparent
AxVLCPlugin21.Controls.Add(panelx)
panelx.BringToFront()
'AddHandler panelx.DoubleClick, AddressOf panelx_click
End Sub
然后我试着播放它只显示一半的视频
我使用面板的原因是暂停视频(通过透明设置面板在视频顶部),当我点击面板,因为视频不支持点击事件
更新
仍然给我一个错误,虽然我已在设计器中插入代码。太明确了我把代码设计师置于主设计师代码之后。我试图只在主设计器代码中放入inherit panel
代码,但它只接受一个继承。
答案 0 :(得分:1)
执行此操作的最佳方法是创建一个继承面板类的自定义控件,并使用以下代码覆盖CreateParams
和OnPaintBackground
:
(Zohar的道具Peled他的帖子here)
将代码替换为:
Public Class TransparentPanel
Inherits System.Windows.Forms.Panel
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
' Make background transparent
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H20
Return cp
End Get
End Property
Protected Overrides Sub OnPaintBackground(e As PaintEventArgs)
' call MyBase.OnPaintBackground(e) only if the backColor is not Color.Transparent
If Me.BackColor <> Color.Transparent Then
MyBase.OnPaintBackground(e)
End If
End Sub
End Class
并将设计师代码替换为:
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class TransparentPanel
Inherits System.Windows.Forms.Panel
'Control overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Control Designer
Private components As System.ComponentModel.IContainer
' NOTE: The following procedure is required by the Component Designer
' It can be modified using the Component Designer. Do not modify it
' using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
End Sub
End Class
您要替换的代码最初可能看起来不同,但使用此代码可确保一切正常。
注意:如果背景颜色设置为Transparent
或Control
,则此代码将使面板透明(这取决于控件通常实际上与透明相同。)
我试图找到用于创建和实现自定义控件的更新资源,但我无法找到维护的资源。所以这里有一些关于如何创建自定义控件的分步说明。
(我在下面的示例中使用Visual Studio 2015,在其他版本中可能会有所不同。)
1。创建新的Windows窗体控件库
2. 然后右键单击并将控件重命名为“TransparentPanel”(或 无论你喜欢什么名字)
3. 将上面的代码分别粘贴到后面的代码和设计器代码中(如果不使用“TransparentPanel”,则更改类名)
4. 构建项目(这将创建您需要在主项目中引用的.dll)
5. 这个是可选的,但最好将DLL存储在除项目bin文件夹之外的某个位置,因此,可选择导航到控件库bin文件夹并复制创建的DLL到您要存储自定义DLL的其他位置。
6。转到要使用控件的项目,然后右键单击工具箱并单击“选择项目...”
7。确保您使用的是“.NET Framework组件”,然后选择“浏览”。
8. 导航到控件库的bin文件夹(或存储DLL的位置),选择控件并单击“打开”。
9。您将在“选择工具箱项”表单中看到现在选择的TransparentControl。点击“确定”
10。那么你应该能够在“常规”部分找到控件。
11. 将控件拖放到表单上。
注意:强> 控件在设计器中可能看起来不透明,但在运行时它应该按照您的要求进行操作。
我希望这适合你!