当前位置: 代码迷 >> 其他开发语言 >> 海康视频采集卡DS40XX用C#调用只显示一道图像
  详细解决方案

海康视频采集卡DS40XX用C#调用只显示一道图像

热度:155   发布时间:2016-05-02 04:01:36.0
海康视频采集卡DS40XX用C#调用只显示一路图像
我在做海康视频采集卡的SDK开发中遇到了以下问题:
1、在一个panel中单独打开任意一路图像是可以的
2、如果将panel分成多个Rectangle,在每一个Rectangle中各显示一路图像时只能显示出来第一路图像,其余的都显示不出来。
我的测试代码如下:

测试代码:
private void Form1_Load(object sender, EventArgs e)
        {

            IntPtr[] handle = new IntPtr[4];
            Rectangle[] rec =new Rectangle[4];
            uint iTotalDSPs;
             if (HikVisionSDK.InitDSPs() <= 0)
            {
                MessageBox.Show("视频压缩卡初始化失败!");
                return;
            }
            iTotalDSPs = HikVisionSDK.GetEncodeChannelCount();  //获取系统中编码通道的总数 
            int sqrt =2;//获取画面显示模式值的平方根
            for (int i = 0; i < 4; i++)
            {
                handle[i] = HikVisionSDK.ChannelOpen(i);
                HikVisionSDK.SetStreamType(handle[i], 1);
                HikVisionSDK.SetEncoderPictureFormat(handle[i], PictureFormat_t.ENC_DCIF_FORMAT);
                HikVisionSDK.SetPreviewOverlayMode(true);//开启overlay预览模式(当显示范围大于704*576时,会自动启动此模式)
                HikVisionSDK.SetOverlayColorKey(ColorTranslator.ToWin32(System.Drawing.Color.White));
                rec[i].Location = new Point((panel_RealPlay.Width / sqrt) * (i % sqrt), (panel_RealPlay.Height / sqrt) * (i / sqrt));//设置每个窗体左上角坐标点
                rec[i].Size = new Size(panel_RealPlay.Width / sqrt, panel_RealPlay.Height / sqrt);//设置每个窗体的尺寸(高度和宽度)
            }
            for (int i = 0; i < 4; i++)
            {
                HikVisionSDK.StartVideoPreview(handle[i], panel_RealPlay.Handle, ref   rec[i], false, 0, 25);
            }
        }






------解决方案--------------------
ref   rec[i]改为固定的rec[0]
  相关解决方案