none
请教关于视频上画图的问题 RRS feed

  • 问题

  • 大家好:项目是WPF工程,现在要在播放视频的窗口上画图,求教一下好的方法?
    • 已移动 Mike Feng 2012年9月26日 3:10 WPF (发件人:.NET Framework 一般性问题讨论区)
    2012年9月25日 3:47

答案

  • 你好

    你是想画图显示在视频上以及显示视频的窗体上是么?

    如果不想覆盖视频,那你可以将InkCanvas作为视频MediaElement的背景,在除Media控件的其余地方画图,但如果你想让画出的图覆盖Media控件的话,我想你可能需要将InkCavas设置成半透明,然后将InkCanvas覆盖整个窗体,在上面作画时也可以看到下面的视频播放,也可在InkCanvas上画画,但是可能会影响下面视频的清晰度。但是除了这个方法,我想没有其他可能。

    希望对你有所帮助


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年9月26日 7:47
    版主
  • 你好,

    目前这是WPF的局限:非WPF呈现技术的内容将覆盖在WPF的内容之上。

    建议你在创建一个非WPF的控件中完成你想要内容,并Host在WPF中。很多情况下,这个方法难以解决问题,但目前没有办法可以很好的解决这个问题。


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月9日 9:16
    版主

全部回复

  • 你好

    你是想画图显示在视频上以及显示视频的窗体上是么?

    如果不想覆盖视频,那你可以将InkCanvas作为视频MediaElement的背景,在除Media控件的其余地方画图,但如果你想让画出的图覆盖Media控件的话,我想你可能需要将InkCavas设置成半透明,然后将InkCanvas覆盖整个窗体,在上面作画时也可以看到下面的视频播放,也可在InkCanvas上画画,但是可能会影响下面视频的清晰度。但是除了这个方法,我想没有其他可能。

    希望对你有所帮助


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年9月26日 7:47
    版主
  • 您好:Annabella Luo

    <InkCanvas>
      <InkCanvas.Background>
         <SolidColorBrush Opacity="0.2"></SolidColorBrush>
      </InkCanvas.Background>
      <MediaElement Source="F:\\Wildlife.wmv" LoadedBehavior="Play" Stretch="Fill"></MediaElement>
    </InkCanvas>

    如果使用MediaElement,确实马上可以实现我想要的功能。

    但是关键是我的项目中不能使用MediaElement,我使用的是在WPF用户控件中承载了一个winform窗体,我们底层有一个播放库,接收Window句柄。

    因此我只将该句柄传入底层播放库。但是这样却无法实现上述的功能,请指点一二,非常感谢。

    代码如下:

                <InkCanvas>
                    <InkCanvas.Background>
                        <SolidColorBrush Color="White" Opacity="0.1"></SolidColorBrush>
                    </InkCanvas.Background>
                    <integration:WindowsFormsHost>
                        <forms:VideoPlayForm x:Name="videoForm"></forms:VideoPlayForm>
                    </integration:WindowsFormsHost>
                </InkCanvas>

    2012年9月27日 3:07
  • 你好,

    目前这是WPF的局限:非WPF呈现技术的内容将覆盖在WPF的内容之上。

    建议你在创建一个非WPF的控件中完成你想要内容,并Host在WPF中。很多情况下,这个方法难以解决问题,但目前没有办法可以很好的解决这个问题。


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月9日 9:16
    版主