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) { _hpRoiPosition = new RoiPositionModel() { MonitorInfo = e.MonitorInfo, RoiPosition = e.Position, }; canvasCaptureHp.Background = new ImageBrush(capture.ToBitmapSource()); } else if (e.CaptureViewMode == CaptureViewMode.Mp) { _mpRoiPosition = new RoiPositionModel() { MonitorInfo = e.MonitorInfo, RoiPosition = e.Position, }; canvasCaptureMp.Background = new ImageBrush(capture.ToBitmapSource()); } Application.Current.MainWindow.WindowState = WindowState.Normal; }
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); }
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; }