private Rectangle Check(WindowInfo info, GameIndexTemplate template) { FileConfig fileConfig = ConfigRepository.fileConfig; //获取结束图片模板 string imagePath = fileConfig.GetTemplateIndexImagePath(template.TemplateImageName); Bitmap templateImage = (Bitmap)Image.FromFile(imagePath); //置顶 Win.SetWindowPos(info.hWnd.hWnd, -1, 0, 0, 0, 0, 1 | 2); //var image = Win.GetWindowCapture(windowHanle.hWnd); //截图 var image = Win.CopyScreen(info.Width, info.Height, info.X, info.Y); var s_bmp = image; var p_bmp = templateImage; var bmp_temp_path = fileConfig.WindowImageTempDir; string timespan = "";// DateTime.Now.ToString("yyyyMMddHHmmssfff"); var s_bmp_temp_name = template.TemplateId + "_s.png"; var p_bmp_temp_name = template.TemplateId + "_p.png"; //存储截图 ImageTools.SaveImage(bmp_temp_path + "\\" + timespan, s_bmp_temp_name, s_bmp); ImageTools.SaveImage(bmp_temp_path + "\\" + timespan, p_bmp_temp_name, templateImage); Stopwatch sp = new Stopwatch(); sp.Start(); long matchTime; Rectangle result = ImageTools.Match( Path.Combine(bmp_temp_path + "\\" + timespan, s_bmp_temp_name), imagePath, out matchTime); sp.Stop(); _alert("图片匹配耗时:" + sp.ElapsedMilliseconds + "ms"); if (!result.IsEmpty) //&& (result.X >= 0 && result.Y >= 0 && result.Width > 0 && result.Height > 0)) { //计算与模板大小差 if (result.Width < p_bmp.Width || result.Height < p_bmp.Height) { return(new Rectangle()); } if (result.Width - p_bmp.Width > 20 || result.Height - p_bmp.Height > 20) { return(new Rectangle()); } //找到位置 _alert(string.Format("找到位置:\r\nx={0}\r\ny={1}\r\nw={2}\r\nh={3}", result.X, result.Y, result.Width, result.Height)); Graphics g = Graphics.FromImage(s_bmp); g.DrawRectangle(new Pen(Color.Red, 2), result); ImageTools.SaveImage(bmp_temp_path + "\\" + timespan, template.TemplateId + "_ss.png", s_bmp); return(result); } return(new Rectangle()); }