//绘制aidi轮廓 public void DrawAqDisplayContours(AqVision.Controls.AqDisplay aqDisplay, List <RootObject> objList, AqVision.AqColorConstants color = AqVision.AqColorConstants.Green, int lineWidth = 1) { for (int i = 0; i < objList.Count(); i++) { for (int j = 0; j < objList[i].contours.Count - 1; j++) { string temp = objList[i].contours[j].x; float sx = float.Parse(objList[i].contours[j].x); float sy = float.Parse(objList[i].contours[j].y); float ex = float.Parse(objList[i].contours[j + 1].x); float ey = float.Parse(objList[i].contours[j + 1].y); DrawLine(sx, sy, ex, ey, aqDisplay, color, lineWidth); } //再设计一个点,补全多边形 int n = objList[i].contours.Count; float nx = float.Parse(objList[i].contours[n - 1].x); float ny = float.Parse(objList[i].contours[n - 1].y); float zero_x = float.Parse(objList[i].contours[0].x); float zero_y = float.Parse(objList[i].contours[0].y); DrawLine(nx, ny, zero_x, zero_y, aqDisplay, color, lineWidth); } }
//绘制halcon轮廓 public void DrawAqDisplayContours(AqVision.Controls.AqDisplay aqDisplay, HObject drawRegions, HTuple drawTolerance, AqVision.AqColorConstants color = AqVision.AqColorConstants.Green, int lineWidth = 1) { HTuple rows; HTuple cols; HTuple breakPoints; GetRegionPoints(drawRegions, drawTolerance, out rows, out cols, out breakPoints); int sum = 0; for (int i = 0; i < breakPoints.Length; i++) { int _count = breakPoints[i]; for (int j = 0; j < _count - 1; j++) { double sx = cols[j + sum]; double sy = rows[j + sum]; double ex = cols[j + sum + 1]; double ey = rows[j + sum + 1]; DrawLine((float)sx, (float)sy, (float)ex, (float)ey, aqDisplay, color, lineWidth); } sum += _count; } }
//aidi public void ShowAllGraph(AqVision.Controls.AqDisplay aqDisplay, Bitmap bitmap, List <RootObject> objList, AqVision.AqColorConstants color = AqVision.AqColorConstants.Green, int lineWidth = 1) { CleanWindow(aqDisplay); ShowBitmap(aqDisplay, bitmap); DrawAqDisplayContours(aqDisplay, objList, color, lineWidth); UpdateWindow(aqDisplay); }
//halcon public void ShowAllGraph(AqVision.Controls.AqDisplay aqDisplay, Bitmap bitmap, HObject drawRegions, HTuple drawTolerance, AqVision.AqColorConstants color = AqVision.AqColorConstants.Green, int lineWidth = 1) { CleanWindow(aqDisplay); ShowBitmap(aqDisplay, bitmap); DrawAqDisplayContours(aqDisplay, drawRegions, drawTolerance, color, lineWidth); UpdateWindow(aqDisplay); }
/// <summary> /// 绘制直线 /// </summary> /// <param name="sx"></param> /// <param name="sy"></param> /// <param name="ex"></param> /// <param name="ey"></param> /// <param name="color"></param> /// <param name="lineWidth"></param> /// <param name="aqDisplay"></param> void DrawLine(float sx, float sy, float ex, float ey, AqVision.AqColorConstants color, int lineWidth, AqVision.Controls.AqDisplay aqDisplay) { AqLineSegment lineSegment = new AqLineSegment(); lineSegment.StartX = sx; lineSegment.StartY = sy; lineSegment.EndX = ex; lineSegment.EndY = ey; lineSegment.Color = color; lineSegment.LineWidthInScreenPixels = lineWidth; aqDisplay.InteractiveGraphics.Add(lineSegment, "", false); }
/// <summary> /// 绘制轮廓 /// </summary> /// <param name="objList"></param> /// <param name="color"></param> /// <param name="lineWidth"></param> /// <param name="aqDisplay"></param> public void DrawContours(List <RootObject> objList, AqVision.AqColorConstants color, int lineWidth, AqVision.Controls.AqDisplay aqDisplay) { for (int i = 0; i < objList.Count(); i++) { for (int j = 0; j < objList[i].contours.Count - 1; j++) { int sx = (int)Convert.ToDouble(objList[i].contours[j].x); int sy = (int)Convert.ToDouble(objList[i].contours[j].y); int ex = (int)Convert.ToDouble(objList[i].contours[j + 1].x); int ey = (int)Convert.ToDouble(objList[i].contours[j + 1].y); DrawLine(sx, sy, ex, ey, color, lineWidth, aqDisplay); } //再设计一个点,补全多边形 int n = objList[i].contours.Count; int nx = (int)Convert.ToDouble(objList[i].contours[n - 1].x); int ny = (int)Convert.ToDouble(objList[i].contours[n - 1].y); int zero_x = (int)Convert.ToDouble(objList[i].contours[0].x); int zero_y = (int)Convert.ToDouble(objList[i].contours[0].y); DrawLine(nx, ny, zero_x, zero_y, color, lineWidth, aqDisplay); } }