我正在尝试使用网络摄像头为徽章拍照。为此,我使用了 directshow.net 库和示例,这为我提供了一个 .NET 中的网络摄像头预览屏幕,按照 DxSnap 示例呈现在图片框中。我现在希望用一个可移动且可调整大小(锁定纵横比)的矩形覆盖它,以便最终用户将其拖到人身上以在适当的点从网络摄像头拍摄图像。所以它看起来像这样:
为此,我认为没问题,将网络摄像头源放入图片框中,我将用透明面板或相框覆盖它,并使用普通的 .NET 代码在其中制作一个矩形。如果我覆盖一个普通面板,它会按预期显示在 directshow 网络摄像头输出上方。但是,如果我使用这个技巧来实现透明面板或图片框:
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,我认为这是避免它的简单方法。