Files
2026-04-14 17:12:31 +08:00

108 lines
6.2 KiB
XML

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:XP.ImageProcessing.RoiControl.Controls"
xmlns:models="clr-namespace:XP.ImageProcessing.RoiControl.Models">
<!-- ControlThumb样式 - 14*14灰色矩形 -->
<Style x:Key="AreaControlThumbStyle" TargetType="{x:Type Thumb}">
<Setter Property="Width" Value="14" />
<Setter Property="Height" Value="14" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Grid>
<!-- 灰色矩形 -->
<Rectangle x:Name="ThumbRect"
Fill="#FF808080"
Stroke="White"
StrokeThickness="1"
Width="14"
Height="14" />
</Grid>
<ControlTemplate.Triggers>
<!-- 鼠标悬停效果 -->
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ThumbRect" Property="Fill" Value="#FF999999" />
<Setter TargetName="ThumbRect" Property="StrokeThickness" Value="2" />
</Trigger>
<!-- 拖拽时效果 -->
<Trigger Property="IsDragging" Value="True">
<Setter TargetName="ThumbRect" Property="Fill" Value="#FFAAAAAA" />
<Setter TargetName="ThumbRect" Property="StrokeThickness" Value="2" />
<Setter Property="Cursor" Value="SizeAll" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ImageROICanvas控件模板 -->
<Style TargetType="{x:Type local:ImageROICanvas}">
<Setter Property="Background" Value="LightGray" />
<Setter Property="ClipToBounds" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ImageROICanvas}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
ClipToBounds="True">
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"
x:Name="PART_ScrollViewer">
<Grid>
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="{TemplateBinding ZoomScale}"
ScaleY="{TemplateBinding ZoomScale}"
CenterX="{Binding ZoomCenter.X, RelativeSource={RelativeSource TemplatedParent}}"
CenterY="{Binding ZoomCenter.Y, RelativeSource={RelativeSource TemplatedParent}}" />
<TranslateTransform X="{TemplateBinding PanningOffsetX}"
Y="{TemplateBinding PanningOffsetY}" />
</TransformGroup>
</Grid.RenderTransform>
<AdornerDecorator x:Name="PART_Adorner">
<Canvas x:Name="PART_Canvas"
Width="{TemplateBinding ImageWidth}"
Height="{TemplateBinding ImageHeight}"
Background="White">
<!-- 图像显示 -->
<Image Source="{TemplateBinding ImageSource}"
Width="{TemplateBinding ImageWidth}"
Height="{TemplateBinding ImageHeight}"
Stretch="Fill" />
<!-- ROI项目容器 - 只支持多边形 -->
<ItemsControl ItemsSource="{TemplateBinding ROIItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- 多边形ROI -->
<Polygon Points="{Binding Points}"
Stroke="{Binding Color}"
StrokeThickness="1"
Fill="Transparent" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
</AdornerDecorator>
</Grid>
</ScrollViewer>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>