Exemplo n.º 1
0
        /// <summary>
        /// 把视频网格设置成行列格局
        /// </summary>
        /// <param name="rows"></param>
        /// <param name="columns"></param>
        public void SetShowMode(int rows, int columns)
        {
            if (rows > 0 && columns > 0)
            {
                _Rows    = rows;
                _Columns = columns;
                for (int i = _Videoes.Count; i < rows * columns; i++)
                {
                    VideoPanel video = VideoPanelFactory.CreatePanel();
                    video.AllowDrop    = true;
                    video.Name         = "actiVideoPanel" + i.ToString();
                    video.ShowTitle    = true;
                    video.StretchToFit = true;
                    video.VideoSource  = null;
                    this.Controls.Add(video);
                    video.Visible = true;
                    _Videoes.Add(video);
                }
                //只显示行列数,其它的隐藏
                for (int i = 0; i < _Videoes.Count; i++)
                {
                    _Videoes[i].Visible = i < rows * columns ? true : false;
                }

                LayoutVideoes();
            }
        }
Exemplo n.º 2
0
        //获取空闲的视频
        private VideoPanel GetFreeVideoPanel(VideoSourceInfo video)
        {
            if (video != null)
            {
                VideoPanel panel = _Videoes.FirstOrDefault(vp => vp.VideoSource == null);
                if (panel != null)
                {
                    if (video.VideoSourceType != panel.VideoType)
                    {
                        int index = _Videoes.FindIndex(vp => vp == panel);
                        if (index >= 0)
                        {
                            RemoveVideoPanel(panel);

                            //视频类型不同的,重新创建视频
                            VideoPanel p = CreateVideoPanel(video.VideoSourceType, panel.Name, panel.Visible);
                            p.Left          = panel.Left;
                            p.Top           = panel.Top;
                            p.Width         = panel.Width;
                            p.Height        = panel.Height;
                            _Videoes[index] = p;

                            return(p);
                        }
                    }
                }
                return(panel);
            }
            return(null);
        }
Exemplo n.º 3
0
        private void VideoDragDropHandling(object sender, VideoSourceInfo video)
        {
            VideoPanel panel = sender as VideoPanel;

            if (panel != null)
            {
                int index = _Videoes.FindIndex(vp => vp == panel);
                if (index >= 0)
                {
                    RemoveVideoPanel(panel);

                    //视频类型不同的,重新创建视频
                    VideoPanel p = CreateVideoPanel(video.VideoSourceType, panel.Name, panel.Visible);
                    p.Left          = panel.Left;
                    p.Top           = panel.Top;
                    p.Width         = panel.Width;
                    p.Height        = panel.Height;
                    _Videoes[index] = p;

                    int aIndex = _ActiveVideoes.FindIndex(vp => vp == panel);
                    if (aIndex >= 0)
                    {
                        _ActiveVideoes[aIndex] = p;
                    }

                    p.VideoSource = video;
                    p.Play(true);
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 把视频网格设置成行列格局
        /// </summary>
        /// <param name="rows"></param>
        /// <param name="columns"></param>
        public void SetShowMode(int rows, int columns)
        {
            if (rows > 0 && columns > 0)
            {
                _Rows    = rows;
                _Columns = columns;
                int videoType = (int)VideoServerType.ACTi;
                if (UserSetting.Current != null)
                {
                    videoType = UserSetting.Current.VideoType;
                }
                for (int i = _Videoes.Count; i < rows * columns; i++)
                {
                    VideoPanel video = CreateVideoPanel(videoType, "actiVideoPanel" + i.ToString(), true);

                    //VideoPanel video = VideoPanelFactory.CreatePanel();
                    //video.AllowDrop = true;
                    //video.Name = "actiVideoPanel" + i.ToString();
                    //video.ShowTitle = true;
                    //video.StretchToFit = true;
                    //video.VideoSource = null;
                    //this.Controls.Add(video);
                    //video.Visible = true;
                    _Videoes.Add(video);
                }
                //只显示行列数,其它的隐藏
                for (int i = 0; i < _Videoes.Count; i++)
                {
                    _Videoes[i].Visible = i < rows * columns ? true : false;
                }

                LayoutVideoes();
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 创建视频窗口
        /// </summary>
        /// <param name="videoType"></param>
        /// <param name="name"></param>
        /// <param name="visible"></param>
        /// <returns></returns>
        private VideoPanel CreateVideoPanel(int videoType, string name, bool visible)
        {
            VideoPanel video = VideoPanelFactory.CreatePanel(videoType);

            video.AllowDrop              = true;
            video.Name                   = name;
            video.ShowTitle              = true;
            video.StretchToFit           = true;
            video.VideoSource            = null;
            video.Visible                = visible;
            video.VideoDragDropHandling -= VideoDragDropHandling;
            video.VideoDragDropHandling += VideoDragDropHandling;
            this.videoPanel.Controls.Add(video);
            return(video);
        }
Exemplo n.º 6
0
 /// <summary>
 /// 显示视频,如果视频已经在网格中,则不进行操作.如果已经打开的视频多于网格的行列数,则超出的视频不会显示出来
 /// </summary>
 public void RenderVideoes(List <VideoSourceInfo> videoes)
 {
     if (videoes != null)
     {
         foreach (VideoSourceInfo vs in videoes)
         {
             if (!_Videoes.Exists(vp => vp.VideoSource == vs))
             {
                 VideoPanel p = _Videoes.FirstOrDefault(vp => vp.VideoSource == null);
                 if (p != null)
                 {
                     p.VideoSource = vs;
                 }
             }
         }
     }
 }
Exemplo n.º 7
0
 /// <summary>
 /// 显示视频,如果视频已经在网格中,则不进行操作.如果已经打开的视频多于网格的行列数,则超出的视频不会显示出来
 /// </summary>
 public void RenderVideoes(List <VideoSourceInfo> videoes)
 {
     if (videoes != null)
     {
         foreach (VideoSourceInfo vs in videoes)
         {
             if (!_Videoes.Exists(vp => vp.VideoSource == vs))
             {
                 VideoPanel p = GetFreeVideoPanel(vs);
                 if (p != null)
                 {
                     p.VideoSource = vs;
                 }
             }
         }
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// 显示并播放视频,如果视频已经在网格中,则播放它.如果已经打开的视频大于网格可以显示的最大视频数量,则超出的视频不会显示出来
        /// </summary>
        /// <param name="video"></param>
        public void RenderAndPlayVideo(VideoSourceInfo video)
        {
            VideoPanel p = _Videoes.SingleOrDefault(vp => vp.VideoSource == video);

            if (p != null)
            {
                p.Play(true);
            }
            else
            {
                p = _Videoes.FirstOrDefault(vp => vp.VideoSource == null);
                if (p != null)
                {
                    p.VideoSource = video;
                    p.Play(true);
                }
            }
        }
Exemplo n.º 9
0
        public UCVideoListView()
        {
            InitializeComponent();

            VideoPanel video = VideoPanelFactory.CreatePanel();

            video.AllowDrop       = true;
            video.Name            = "actiVideoPanel0";
            video.ShowTitle       = true;
            video.StretchToFit    = true;
            video.VideoSource     = null;
            video.Visible         = true;
            video.Dock            = DockStyle.Fill;
            this.btnLeft.Visible  = false;
            this.btnRight.Visible = false;
            this.videoPanel.Controls.Add(video);
            _Videoes.Add(video);
            Clear();
        }
Exemplo n.º 10
0
        /// <summary>
        /// 在视频列表中显示一系列图片
        /// </summary>
        /// <param name="imgs"></param>
        public void ShowVideoes(List <VideoSourceInfo> videoes)
        {
            this.btnLeft.Visible  = !(videoes == null || videoes.Count <= 1);
            this.btnRight.Visible = !(videoes == null || videoes.Count <= 1);

            _ActiveVideoes.Clear();
            if (videoes != null)
            {
                for (int i = _Videoes.Count; i < videoes.Count; i++)
                {
                    //VideoPanel video = VideoPanelFactory.CreatePanel();
                    //video.AllowDrop = true;
                    //video.Name = "actiVideoPanel" + i.ToString();
                    //video.ShowTitle = true;
                    //video.StretchToFit = true;
                    //video.VideoSource = null;
                    //this.videoPanel.Controls.Add(video);
                    VideoSourceInfo videoinfo = videoes[i];
                    VideoPanel      video     = CreateVideoPanel(videoinfo.VideoSourceType, "actiVideoPanel" + i.ToString(), true);
                    _Videoes.Add(video);
                }
                foreach (VideoPanel vp in _Videoes)
                {
                    if (!videoes.Exists(v => v == vp.VideoSource))
                    {
                        if (vp.Status == VideoStatus.Playing)
                        {
                            vp.Close();
                        }
                        vp.VideoSource = null;
                    }
                }

                foreach (VideoSourceInfo vs in videoes)
                {
                    VideoPanel video = _Videoes.FirstOrDefault(vp => vp.VideoSource == vs);
                    if (video == null)
                    {
                        VideoPanel p = _Videoes.FirstOrDefault(vp => vp.VideoSource == null);
                        if (p != null)
                        {
                            if (vs.VideoSourceType != p.VideoType)
                            {
                                int index = _Videoes.FindIndex(vp => vp == p);
                                if (index >= 0)
                                {
                                    RemoveVideoPanel(p);

                                    //视频类型不同的,重新创建视频
                                    VideoPanel panel = CreateVideoPanel(vs.VideoSourceType, p.Name, p.Visible);
                                    panel.Left      = p.Left;
                                    panel.Top       = p.Top;
                                    panel.Width     = p.Width;
                                    panel.Height    = p.Height;
                                    _Videoes[index] = panel;

                                    p = panel;
                                }
                            }

                            p.VideoSource = vs;
                            _ActiveVideoes.Add(p);
                        }
                    }
                    else
                    {
                        _ActiveVideoes.Add(video);
                    }
                }
            }

            if (_ActiveVideoes.Count > 0)
            {
                _CurImageIndex = 0;
                ShowVideo(_CurImageIndex);
            }
            else
            {
                _CurImageIndex = -1;
                ShowVideo(_CurImageIndex);
            }
        }
Exemplo n.º 11
0
 //从窗体控件中移除视频控件
 private void RemoveVideoPanel(VideoPanel p)
 {
     p.Close();
     p.VideoDragDropHandling -= VideoDragDropHandling;
     this.videoPanel.Controls.Remove(p);
 }
Exemplo n.º 12
0
        /// <summary>
        /// 在视频列表中显示一系列图片
        /// </summary>
        /// <param name="imgs"></param>
        public void ShowVideoes(List <VideoSourceInfo> videoes)
        {
            this.btnLeft.Visible  = !(videoes == null || videoes.Count <= 1);
            this.btnRight.Visible = !(videoes == null || videoes.Count <= 1);

            _ActiveVideoes.Clear();
            if (videoes != null)
            {
                for (int i = _Videoes.Count; i < videoes.Count; i++)
                {
                    VideoPanel video = VideoPanelFactory.CreatePanel();
                    video.AllowDrop    = true;
                    video.Name         = "actiVideoPanel" + i.ToString();
                    video.ShowTitle    = true;
                    video.StretchToFit = true;
                    video.VideoSource  = null;
                    this.videoPanel.Controls.Add(video);
                    _Videoes.Add(video);
                }
                foreach (VideoPanel vp in _Videoes)
                {
                    if (!videoes.Exists(v => v == vp.VideoSource))
                    {
                        if (vp.Status == VideoStatus.Playing)
                        {
                            vp.Close();
                        }
                        vp.VideoSource = null;
                    }
                }

                foreach (VideoSourceInfo vs in videoes)
                {
                    VideoPanel video = _Videoes.FirstOrDefault(vp => vp.VideoSource == vs);
                    if (video == null)
                    {
                        VideoPanel p = _Videoes.FirstOrDefault(vp => vp.VideoSource == null);
                        if (p != null)
                        {
                            p.VideoSource = vs;
                            _ActiveVideoes.Add(p);
                        }
                    }
                    else
                    {
                        _ActiveVideoes.Add(video);
                    }
                }
            }

            if (_ActiveVideoes.Count > 0)
            {
                _CurImageIndex = 0;
                ShowVideo(_CurImageIndex);
            }
            else
            {
                _CurImageIndex = -1;
                ShowVideo(_CurImageIndex);
            }
        }