Ejemplo n.º 1
0
        public GameContentView()
        {
            _captureViews = new List <CaptureView>();
            _dummyRect    = new Utils.Infrastructure.Rect();

            InitializeComponent();

            InitEvent();

            Init();
        }
Ejemplo n.º 2
0
        public static Bitmap MakeRoiImage(Bitmap source, Rect rect)
        {
            var sourceMat = BitmapConverter.ToMat(source);
            var roiMat    = sourceMat.SubMat(new OpenCvSharp.Rect()
            {
                Left   = rect.Left,
                Top    = rect.Top,
                Height = rect.Height,
                Width  = rect.Width
            });
            var destBitmap = BitmapConverter.ToBitmap(roiMat);

            return(destBitmap);
        }
Ejemplo n.º 3
0
        private int CheckPercentageImage(RoiPositionModel roiPositionModel, Process process, Tuple <double, double, double> lower, Tuple <double, double, double> upper)
        {
            var applciationData = ObjectExtensions.GetInstance <ApplicationDataManager>().Find(process.ProcessName) ?? new ApplicationDataModel();

            if (DisplayHelper.ProcessCapture(process, out Bitmap bitmap, applciationData.IsDynamic))
            {
                var processPosition = new Rect();
                NativeHelper.GetWindowRect(process.MainWindowHandle, ref processPosition);

                var factor  = NativeHelper.GetSystemDPI();
                var factorX = 1.0F * factor.X / ConstHelper.DefaultDPI;
                var factorY = 1.0F * factor.Y / ConstHelper.DefaultDPI;

                var realLeft = roiPositionModel.RoiPosition.Left - ((processPosition.Left - roiPositionModel.MonitorInfo.Rect.Left));
                var realTop  = roiPositionModel.RoiPosition.Top - (processPosition.Top - roiPositionModel.MonitorInfo.Rect.Top);

                var realWidth  = (int)Math.Truncate(roiPositionModel.RoiPosition.Width * factorX);
                var realHeight = (int)Math.Truncate(roiPositionModel.RoiPosition.Height * factorY);

                //var realWidth = realLeft + roiPositionModel.RoiPosition.Width;
                //var realHeight = realTop + roiPositionModel.RoiPosition.Height;


                var roi = new Rect()
                {
                    Left   = 327,
                    Right  = 1563,
                    Top    = 548,
                    Bottom = 773,
                };

                var roiBitmap = OpenCVHelper.MakeRoiImage(bitmap, roi);

                roiBitmap.Save("crop.jpg");

                canvasCaptureImage.Background = new ImageBrush(roiBitmap.ToBitmapSource());

                var percent = OpenCVHelper.SearchImagePercentage(roiBitmap, lower, upper);
            }
            return(0);
        }
Ejemplo n.º 4
0
        private void NotifyHelper_ScreenCaptureDataBind(CaptureEventArgs e)
        {
            if (e.CaptureViewMode != CaptureViewMode.Game &&
                e.CaptureViewMode != CaptureViewMode.HP &&
                e.CaptureViewMode != CaptureViewMode.Mp)
            {
                return;
            }

            foreach (var item in _captureViews)
            {
                item.Hide();
            }
            if (e.CaptureImage == null)
            {
                return;
            }

            var capture = e.CaptureImage;

            if (e.CaptureViewMode == CaptureViewMode.Game)
            {
                canvasCaptureImage.Background = new ImageBrush(capture.ToBitmapSource());
                _bitmap = new Bitmap(capture, capture.Width, capture.Height);
            }
            else if (e.CaptureViewMode == CaptureViewMode.HP)
            {
                var processPosition = new Utils.Infrastructure.Rect();

                NativeHelper.GetWindowRect(_currentProcess.MainWindowHandle, ref processPosition);

                var roiPosition = CalculatorRoiPosition(processPosition, e.Position, e.MonitorInfo);
                if (roiPosition.Equals(_dummyRect))
                {
                    return;
                }

                _hpRoiPosition = new RoiPositionModel()
                {
                    MonitorInfo = e.MonitorInfo,
                    RoiPosition = roiPosition,
                };
                canvasCaptureHp.Background = new ImageBrush(capture.ToBitmapSource());
            }
            else if (e.CaptureViewMode == CaptureViewMode.Mp)
            {
                var processPosition = new Utils.Infrastructure.Rect();

                NativeHelper.GetWindowRect(_currentProcess.MainWindowHandle, ref processPosition);

                var roiPosition = CalculatorRoiPosition(processPosition, e.Position, e.MonitorInfo);
                if (roiPosition.Equals(_dummyRect))
                {
                    return;
                }
                _mpRoiPosition = new RoiPositionModel()
                {
                    MonitorInfo = e.MonitorInfo,
                    RoiPosition = roiPosition,
                };
                canvasCaptureMp.Background = new ImageBrush(capture.ToBitmapSource());
            }

            Application.Current.MainWindow.WindowState = WindowState.Normal;
        }