public Edge(Bitmap bitmap, EdgeTemplate template) { Source = bitmap; Type = template.Type; Data = template.Points.Select(x => bitmap.GetPixel(x.X, x.Y)).ToArray(); }
private static bool MatchesInPosition(Bitmap[,] result, List<EdgeTemplate> templates, Bitmap newBmp, int x, int y) { foreach (var template in templates) { var dir = Edge.ToDirection(template.Type); var x2 = dir.X + x; var y2 = dir.Y + y; if (result[x2, y2] != null) { var reverseTemplate = new EdgeTemplate(Edge.Opposite(template.Type), template.Width, template.Height); var edge = new Edge(newBmp, template); var reverseEdge = new Edge(result[x2, y2], reverseTemplate); if (!reverseEdge.Matches(edge)) { return false; } } } return true; }