WindowsMediaPlayer

时间:2017-01-19 23:47:09

标签: c# winforms panel transparency windows-media-player

我已在我的C#(桌面)应用中嵌入了WindowsMediaPlayer,并希望在其上放置透明的PanelPictureBox

由于PanelPictureBox都没有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,如果没有他,我仍然会在第一个方面! :-)]

2 个答案:

答案 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中添加子控件的顺序。

希望这有助于解决您的问题,虽然时间有点迟了。

相关问题