气泡测量:ROI上方显示空隙率和PASS/FAIL判定标签
This commit is contained in:
@@ -375,6 +375,7 @@ namespace XP.ImageProcessing.RoiControl.Controls
|
|||||||
private BubbleSubTool _bubbleTool = BubbleSubTool.Roi;
|
private BubbleSubTool _bubbleTool = BubbleSubTool.Roi;
|
||||||
private Rectangle _bubbleRoiRect;
|
private Rectangle _bubbleRoiRect;
|
||||||
private Ellipse _bubbleRoiHandle; // 右下角调整手柄
|
private Ellipse _bubbleRoiHandle; // 右下角调整手柄
|
||||||
|
private TextBlock _bubbleResultLabel; // ROI 上方结果标签
|
||||||
private Rect? _bubbleRoi;
|
private Rect? _bubbleRoi;
|
||||||
private Point? _bubbleRoiStart;
|
private Point? _bubbleRoiStart;
|
||||||
private bool _bubbleRoiDragging;
|
private bool _bubbleRoiDragging;
|
||||||
@@ -1137,6 +1138,16 @@ namespace XP.ImageProcessing.RoiControl.Controls
|
|||||||
};
|
};
|
||||||
_measureOverlay.Children.Add(_bubbleRoiHandle);
|
_measureOverlay.Children.Add(_bubbleRoiHandle);
|
||||||
}
|
}
|
||||||
|
if (_bubbleResultLabel == null)
|
||||||
|
{
|
||||||
|
_bubbleResultLabel = new TextBlock
|
||||||
|
{
|
||||||
|
FontSize = 13, FontWeight = FontWeights.Bold,
|
||||||
|
IsHitTestVisible = false,
|
||||||
|
Visibility = Visibility.Collapsed
|
||||||
|
};
|
||||||
|
_measureOverlay.Children.Add(_bubbleResultLabel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SyncBubbleRoiVisuals()
|
private void SyncBubbleRoiVisuals()
|
||||||
@@ -1256,6 +1267,17 @@ namespace XP.ImageProcessing.RoiControl.Controls
|
|||||||
}
|
}
|
||||||
|
|
||||||
double voidRate = roiArea > 0 ? voidArea * 100.0 / roiArea : 0;
|
double voidRate = roiArea > 0 ? voidArea * 100.0 / roiArea : 0;
|
||||||
|
// 更新 ROI 上方标签
|
||||||
|
if (_bubbleResultLabel != null)
|
||||||
|
{
|
||||||
|
string cls = voidRate <= 25.0 ? "PASS" : "FAIL";
|
||||||
|
_bubbleResultLabel.Text = $"Void: {voidRate:F1}% | {cls}";
|
||||||
|
_bubbleResultLabel.Foreground = cls == "PASS" ? Brushes.Lime : Brushes.Red;
|
||||||
|
Canvas.SetLeft(_bubbleResultLabel, roi.X);
|
||||||
|
Canvas.SetTop(_bubbleResultLabel, roi.Y - 20);
|
||||||
|
_bubbleResultLabel.Visibility = Visibility.Visible;
|
||||||
|
}
|
||||||
|
|
||||||
RaiseMeasureCompleted(roi.TopLeft, roi.BottomRight, voidRate, 1, "BubbleVoid");
|
RaiseMeasureCompleted(roi.TopLeft, roi.BottomRight, voidRate, 1, "BubbleVoid");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1388,6 +1410,7 @@ namespace XP.ImageProcessing.RoiControl.Controls
|
|||||||
{
|
{
|
||||||
if (_bubbleRoiRect != null) { _measureOverlay.Children.Remove(_bubbleRoiRect); _bubbleRoiRect = null; }
|
if (_bubbleRoiRect != null) { _measureOverlay.Children.Remove(_bubbleRoiRect); _bubbleRoiRect = null; }
|
||||||
if (_bubbleRoiHandle != null) { _measureOverlay.Children.Remove(_bubbleRoiHandle); _bubbleRoiHandle = null; }
|
if (_bubbleRoiHandle != null) { _measureOverlay.Children.Remove(_bubbleRoiHandle); _bubbleRoiHandle = null; }
|
||||||
|
if (_bubbleResultLabel != null) { _measureOverlay.Children.Remove(_bubbleResultLabel); _bubbleResultLabel = null; }
|
||||||
if (_bubbleMaskImage != null) { _measureOverlay.Children.Remove(_bubbleMaskImage); _bubbleMaskImage = null; }
|
if (_bubbleMaskImage != null) { _measureOverlay.Children.Remove(_bubbleMaskImage); _bubbleMaskImage = null; }
|
||||||
}
|
}
|
||||||
_bubbleRoi = null;
|
_bubbleRoi = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user