我正在使用C#制作Windows.Forms应用程序。有三个AXIS M7001视频编码器通过RTSP协议提供H264转换流。我想把这些流(相机放在一起),正确剪切并获得一个广角的直播视频,我可以在其上添加图片和画线。所以我需要一种方法来绘制和更新所有三个流之上的几十行,并将一张图片放在透明背景中。
Axis(Axis Media Control SDK,AMC)提供了一个SDK,它实际上是一个具有从Control类继承的类的单个库。它们提供了几种绘制AMC对象的方法,它只支持线条,椭圆和矩形等图形基元。
AMC的绘图方法不允许我在最终视频流的基础上进行整体绘制。它也不支持添加叠加图片。
AMC控件不允许我在它前面放任何透明的东西。面板/图片框的背景变得不透明(取自Form.BackColor)或背景和前景都隐藏。
我已经通过覆盖Panel和PictureBox来尝试以下想法
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.
}
它允许我在AMC顶部放置一个透明面板并处理鼠标事件,但是如果我在面板上放了一些东西或添加了一些OnPaint事件,我就看不到了。 尝试覆盖PictureBox没有结果。
当然,像
这样的东西BackColor = Color.Transparent;
也不起作用。