我已在我的C#(桌面)应用中嵌入了WindowsMediaPlayer,并希望在其上放置透明的Panel
或PictureBox
。
由于Panel
或PictureBox
都没有TransparencyKey
属性,我无法使用BackColor=TransparencyKey=Color.Magenta
方法。
我已尝试将BackColor
的{{1}}设置为Panel
。它似乎不起作用。 [或者可能确实如此,但WMP视频根本没有通过(透明)面板显示。]
(最终)目标是防止用户直接与WMP进行交互,并且理想情况下,可以覆盖“用户”信息可以传达给用户。
任何人都成功地做了这样的事情吗?我对如何解决这个问题的大多数想法持开放态度。
编辑:
使用“How to Make a UserControls BackColor Transparent in C#?”中的示例,我创建了“我自己的”面板,如下所示:
Color.Transparent
这实现了制作“隐形”面板的目标,该面板覆盖WMP,同时允许WMP显示通过。但是,我仍然需要在WMP窗口的前面显示一些信息。
我试图直接在这个透明面板上'绘制',[参见OnPaint()中'//显示覆盖信息'的代码块],但这没有显示。但是,如果我'隐藏()'WMP窗口,写作确实显示(当然,WMP没有)。如果我将透明面板仅覆盖屏幕的一半并添加“常规”面板(带有BackgroundImage),则会显示它,除非它的任何部分与透明面板重叠,在这种情况下它不会显示。
我已经注意到有关父母绘制小组背景的评论。我不明白这一点,但让透明面板的父母是WMP(TP.Parent = WMP;)没有任何区别。
我准备相信我在这里缺少一些基本的东西,因为我对表格/控制的知识充其量是最基本的。尽管如此,我真的很想了解我所缺少的东西,所以我可以将它添加到我的知识库中,在这里修复我的问题,继续前进。
[并祝福George Birbilis,如果没有他,我仍然会在第一个方面! :-)]
答案 0 :(得分:0)
块引用
以加载的形式,PictureBox1的背景指定为透明,然后PictureBox1指定为PictureBox2容器的父级,可以在PictureBox2中实现透明和透明的PictureBox1背景。 VB2010环境。 代码如下:附在屏幕左侧是运行效果,右边是编程环境,希望这个效果你会满意
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox1.BackColor = Color.Transparent
PictureBox2.Parent = PictureBox1
或gdi +
添加绘画事件
Dim g As Graphics = Me.CreateGraphics
答案 1 :(得分:0)
在designer.cs文件中添加此语句,this.YOURWINDOWSMEDIAPLAYER.Controls.Add(this.YOURTRANSPARENTPANEL);
控件的顺序取决于您在designer.cs中添加子控件的顺序。
希望这有助于解决您的问题,虽然时间有点迟了。