private Bitmap CutImage(RelativeRectangle relativeRectangle, int differenceX = 0, int differenceY = 0) { // TODO 差分でキャプチャいめえーじからはみ出すとエラー // キャプチャ範囲 var captureWindowModel = ModelConnector.CaptureWindow; // 画像キャプチャ Bitmap captureBitmap = ScreenCaptureModel.ScreenCapture( captureWindowModel.X, captureWindowModel.Y, captureWindowModel.Width, captureWindowModel.Height); // 切り抜く範囲 Rectangle cutRect = new Rectangle( (int)(captureWindowModel.Width * relativeRectangle.X), (int)(captureWindowModel.Height * relativeRectangle.Y), (int)(captureWindowModel.Width * relativeRectangle.Width), (int)(captureWindowModel.Height * relativeRectangle.Height) ); Bitmap cutBitmap = captureBitmap.Clone(cutRect, captureBitmap.PixelFormat); return(cutBitmap); }
public void CreatePokemonMarkedCaptureImage() { var captureWindowModel = ModelConnector.CaptureWindow; var myCaptureImageManegementModel = ModelConnector.MyCaptureImageManegement; var opponentCaptureImageManegementModel = ModelConnector.OpponentCaptureImageManegement; // キャプチャ範囲 var captureRect = new Rectangle(captureWindowModel.X, captureWindowModel.Y, captureWindowModel.Width, captureWindowModel.Height); // アイコン部分を囲む矩形リストを作成 List <Rectangle> iconSurroundRects = new List <Rectangle>(); iconSurroundRects.AddRange(CreateIconSurroundRects(captureRect, myCaptureImageManegementModel)); iconSurroundRects.AddRange(CreateIconSurroundRects(captureRect, opponentCaptureImageManegementModel)); // スクリーンキャプチャ var captureImage = ScreenCaptureModel.ScreenCapture(captureRect); //ImageオブジェクトのGraphicsオブジェクトを作成する using (Graphics g = Graphics.FromImage(captureImage)) { // ペン using (Pen p = new Pen(Color.Red, 3)) { foreach (Rectangle iconSurroundRect in iconSurroundRects) { g.DrawRectangle(p, iconSurroundRect); } } } PokemonMarkedCaptureImage = BitmapConverterModel.ToBitmapImage(captureImage); }