BGA检测: ROI按钮样式、拖拽性能优化、清除测量同时清除ROI

This commit is contained in:
李伟
2026-04-29 09:00:17 +08:00
parent ca67cbde2b
commit 1a379eebea
4 changed files with 42 additions and 4 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

@@ -113,11 +113,15 @@ namespace XplorePlane.ViewModels.ImageProcessing
_canvas.ROIItems.Add(_roiShape); _canvas.ROIItems.Add(_roiShape);
_canvas.SelectedROI = _roiShape; _canvas.SelectedROI = _roiShape;
// 手动注册 CollectionChanged // 手动注册 CollectionChanged(仅在添加/删除顶点时更新 Adorner,拖拽不触发)
_roiShape.Points.CollectionChanged += (s, e) => _roiShape.Points.CollectionChanged += (s, e) =>
{ {
_canvas.SelectedROI = null; if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add ||
_canvas.SelectedROI = _roiShape; e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
{
_canvas.SelectedROI = null;
_canvas.SelectedROI = _roiShape;
}
}; };
// 禁用右键菜单(参考点点距方式) // 禁用右键菜单(参考点点距方式)
@@ -14,7 +14,39 @@
<!-- 左侧:参数面板 --> <!-- 左侧:参数面板 -->
<ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto"> <ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto">
<StackPanel Margin="10"> <StackPanel Margin="10">
<CheckBox Content="启用ROI区域" IsChecked="{Binding RoiEnabled}" Margin="0,0,0,6" FontWeight="SemiBold" /> <ToggleButton IsChecked="{Binding RoiEnabled}" Margin="0,0,0,6" Padding="8,4" Cursor="Hand" ToolTip="启用ROI区域">
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border x:Name="Bd" Background="#EEEEEE" BorderBrush="#CCCCCC"
BorderThickness="1" CornerRadius="3" Padding="10,4">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Bd" Property="Background" Value="#0078D7" />
<Setter TargetName="Bd" Property="BorderBrush" Value="#005A9E" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="#DDDDDD" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsChecked" Value="True" />
</MultiTrigger.Conditions>
<Setter TargetName="Bd" Property="Background" Value="#006CBE" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
<Image Source="/Assets/Icons/polygon.png" Width="20" Height="20" />
</ToggleButton>
<TextBlock Text="BGA定位参数" FontWeight="SemiBold" Margin="0,0,0,6" /> <TextBlock Text="BGA定位参数" FontWeight="SemiBold" Margin="0,0,0,6" />
<TextBlock Text="焊球最小面积" FontSize="11" Margin="0,0,0,2" /> <TextBlock Text="焊球最小面积" FontSize="11" Margin="0,0,0,2" />
<DockPanel Margin="0,0,0,6"> <DockPanel Margin="0,0,0,6">
@@ -137,6 +137,8 @@ namespace XplorePlane.Views
private void ClearAllMeasurements_Click(object sender, RoutedEventArgs e) private void ClearAllMeasurements_Click(object sender, RoutedEventArgs e)
{ {
RoiCanvas.ClearMeasurements(); RoiCanvas.ClearMeasurements();
RoiCanvas.ROIItems?.Clear();
RoiCanvas.SelectedROI = null;
if (DataContext is ViewportPanelViewModel vm) if (DataContext is ViewportPanelViewModel vm)
vm.ResetMeasurementState(); vm.ResetMeasurementState();
SetStatus("已清除所有测量"); SetStatus("已清除所有测量");