首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >directshow.net网络摄像头覆盖透明面板

directshow.net网络摄像头覆盖透明面板
EN

Stack Overflow用户
提问于 2011-10-10 17:48:27
回答 2查看 3K关注 0票数 2

我正在试着用摄像头来拍摄徽章的照片。为了做到这一点,我使用了directshow.net库和示例,这让我在.NET中获得了一个网络摄像头预览屏幕,按照DxSnap示例在图片框中呈现。我现在希望用一个可移动和可调整大小(锁定纵横比)的矩形来覆盖它,这样最终用户就可以将其拖到人身上,以便在适当的点从网络摄像头中获取图像。所以它看起来像这样:

要做到这一点,我认为没有问题,网络摄像头的源代码是放在一个图片框,我将只需覆盖它与一个透明的面板或相框,并使用正常的.NET代码在上面做一个矩形。如果我覆盖一个普通的面板,它会像预期的那样出现在directshow网络摄像头输出的上方。但是,如果我使用这个技巧来实现一个透明面板或picturebox:

代码语言:javascript
复制
protected override CreateParams CreateParams
{
    get
    {
        CreateParams createParams = base.CreateParams;
        createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
        return createParams;
    }
}

protected override void OnPaintBackground(PaintEventArgs e)
{
   // Do not paint background.
}

不幸的是,它出现在directshow输出的下面。有没有一种简单的方法来解决这个问题,或者另一种方法。如果可以避免,我不会太深入地研究directshow.net,我认为这是避免它的一种简单方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-14 18:58:22

我最终使用的是AForge.NET项目而不是DirectShow.NET,它有一些非常棒的示例,绘制它的视频输出就像处理它的视频播放器OnPaint事件一样简单,因为它为每一帧调用它。它似乎需要更多的CPU,但不会太费力。

票数 1
EN

Stack Overflow用户

发布于 2011-10-12 17:47:42

叠加的问题是,通过在视频适配器上创建非RGB表面(通常是)的特定方法,视频以不同于常规GUI图形的方式显示。因此,您不能将视频与窗口重叠,也不能直接使用GDI。

你仍然可以在途中修改视频,或者使用特殊的混音器覆盖视频。

请看这个问题:Showing a semi-transparent Image object over an IVideoWindow in C# using DirectShow.NET,因为它讨论了一个类似的请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7711035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档