예제 #1
0
        /// <summary>
        /// Configure the VLC Control(s) and overlay(s) that handle mouse events
        /// </summary>
        private void SetupVlc()
        {
            NumberOfViews = GetNumberOfViews();
            myVlcControl  = new VlcControl[NumberOfViews];
            vlcOverlay    = new VlcOverlay[NumberOfViews];
            string[] vlcMediaOptions = Regex.Split(getIniValue("VlcOptions"), "\\s*,\\s*"); // Split by comma and trim whitespace

            BgPtzWorker = new BackgroundWorker[NumberOfViews];

            for (int i = 0; i < NumberOfViews; i++)
            {
                BgPtzWorker[i] = new BackgroundWorker();
                BgPtzWorker[i].WorkerReportsProgress      = true;
                BgPtzWorker[i].WorkerSupportsCancellation = true;
                BgPtzWorker[i].DoWork += BgPtzWorker_DoWork;

                myVlcControl[i] = new VlcControl();
                vlcOverlay[i]   = new VlcOverlay()
                {
                    Name = "VLC Overlay " + i, BackColor = Color.Transparent, TabIndex = i
                };                                                                                                           //, Parent = myVlcControl[i], Dock = DockStyle.Fill, TabIndex = i };
                vlcOverlay[i].GotoPtzPreset += Viewer_GotoPtzPreset;
                vlcOverlay[i].ToggleMute    += Viewer_ToggleMute;

                // Add panel to VlcControl container to capture mouse events
                Panel MouseEventPanel = new Panel()
                {
                    Parent = myVlcControl[i], BackColor = Color.Transparent, Dock = DockStyle.Fill, TabIndex = i,
                };
                MouseEventPanel.MouseEnter       += VlcOverlay_MouseEnter;
                MouseEventPanel.MouseLeave       += VlcOverlay_MouseLeave;
                MouseEventPanel.MouseDoubleClick += VlcOverlay_MouseDoubleClick;
                MouseEventPanel.MouseMove        += VlcOverlay_MouseMove;
                MouseEventPanel.MouseDown        += VlcOverlay_MouseDown;
                MouseEventPanel.MouseUp          += VlcOverlay_MouseUp;
                MouseEventPanel.MouseWheel       += VlcOverlay_MouseWheel;

                ((System.ComponentModel.ISupportInitialize)(myVlcControl[i])).BeginInit();

                myVlcControl[i].VlcLibDirectory       = VlcViewer.GetVlcLibLocation(); // Tried to call once outside loop, but it causes in exception on program close
                myVlcControl[i].VlcMediaplayerOptions = vlcMediaOptions;               // new string[] { "--network-caching=150", "--video-filter=deinterlace" };
                myVlcControl[i].Location  = new Point(0, 0);
                myVlcControl[i].Name      = string.Format("VLC Viewer {0}", i);
                myVlcControl[i].Rate      = (float)0.0;
                myVlcControl[i].BackColor = Color.Gray;
                myVlcControl[i].TabIndex  = i;
                //myVlcControl[i].MouseDoubleClick += VlcOverlay_MouseDoubleClick;

                // Events
                myVlcControl[i].Playing          += OnVlcPlaying;
                myVlcControl[i].EncounteredError += MyVlcControl_EncounteredError;
                myVlcControl[i].Buffering        += Form1_Buffering;

                //myVlcControl[i].Controls.Add(vlcOverlay[i]);
                // Had to add this line to make work
                ((System.ComponentModel.ISupportInitialize)(myVlcControl[i])).EndInit();
            }

            setSizes();
        }