コード例 #1
0
        public MainApplication(ProcessDetection processDetection, List <ClientMap> clientMapList, Settings appSettings)
        {
            this.AppSettings = appSettings;
            InitializeBackgroundWorker();
            this.processDetection = processDetection;
            this.ClientMapping    = clientMapList.AsEnumerable();

            IEnumerable <MonitorInfo> monitors = MonitorEnumerationHelper.GetMonitors();
            IEnumerable <MonitorInfo> primMons = from primaryMonitor in monitors
                                                 where primaryMonitor.IsPrimary == true
                                                 select primaryMonitor;
            MonitorInfo         monitor = primMons.FirstOrDefault();
            GraphicsCaptureItem item    = CaptureHelper.CreateItemForMonitor(monitor.Hmon);


            switch (Settings.AppRunMode)
            {
            case SettingsAppRunMode.MockGame:
                this.mockImage = new Mat(Settings.MockImageGame);
                break;

            case SettingsAppRunMode.MockLauncher:
                this.mockImage = new Mat(Settings.MockImageLauncher);
                break;
            }

            if (item != null)
            {
                this.StartCaptureFromItem(item);
            }
        }
コード例 #2
0
        private Bitmap CaptureRectangleDirect3D11(IntPtr handle, Rectangle rect, bool captureCursor = false)
        {
            var    captureMonRegions = new List <ModernCaptureMonitorDescription>();
            Bitmap bmp;

            if (rect.Width == 0 || rect.Height == 0)
            {
                return(null);
            }

            // 1. Get regions and the HDR metadata information
            foreach (var monitor in MonitorEnumerationHelper.GetMonitors())
            {
                if (monitor.MonitorArea.IntersectsWith(rect))
                {
                    var screenBoundCopy = monitor.MonitorArea.Copy();
                    screenBoundCopy.Intersect(rect);
                    captureMonRegions.Add(new ModernCaptureMonitorDescription
                    {
                        DestGdiRect   = screenBoundCopy,
                        HdrMetadata   = HdrMetadataUtility.GetHdrMetadataForMonitor(monitor.DeviceName),
                        MonitorInfo   = monitor,
                        CaptureCursor = captureCursor,
                    });
                }
            }

            // 2. Compose a list of rects for capture
            var catpureItem = new ModernCaptureItemDescription(rect, captureMonRegions);

            // 3. Request capture and wait for bitmap
            // 3.1 Determine rects and transform them to DirectX coordinate system
            // 3.2 Capture and wait for content
            // 3.3 Shader and draw passes
            // 3.4 Datastream pass, copy
            var d3dCapture = ModernCaptureSignletonManager.Instance.Take();

            bmp = d3dCapture.CaptureAndProcess(catpureItem);
            ModernCaptureSignletonManager.Instance.Release();

            return(bmp);
        }