透明PictureBox和/或通过自定义控件绘画

时间:2015-03-18 15:29:17

标签: c# winforms transparency

想法

我正在使用C#制作Windows.Forms应用程序。有三个AXIS M7001视频编码器通过RTSP协议提供H264转换流。我想把这些流(相机放在一起),正确剪切并获得一个广角的直播视频,我可以在其上添加图片和画线。所以我需要一种方法来绘制和更新所有三个流之上的几十行,并将一张图片放在透明背景中。

问题

Axis(Axis Media Control SDK,AMC)提供了一个SDK,它实际上是一个具有从Control类继承的类的单个库。它们提供了几种绘制AMC对象的方法,它只支持线条,椭圆和矩形等图形基元。

AMC的绘图方法不允许我在最终视频流的基础上进行整体绘制。它也不支持添加叠加图片。

AMC控件不允许我在它前面放任何透明的东西。面板/图片框的背景变得不透明(取自Form.BackColor)或背景和前景都隐藏。

Google

我已经通过覆盖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;

也不起作用。

0 个答案:

没有答案