Files
XplorePlane/XplorePlane/Views/Main/ViewportPanelView.xaml
T

134 lines
6.4 KiB
XML

<UserControl
x:Class="XplorePlane.Views.ViewportPanelView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:prism="http://prismlibrary.com/"
xmlns:roi="clr-namespace:XP.ImageProcessing.RoiControl.Controls;assembly=XP.ImageProcessing.RoiControl"
xmlns:histogram="clr-namespace:XP.Common.Controls.ImageHistogram;assembly=XP.Common"
prism:ViewModelLocator.AutoWireViewModel="True"
d:DesignHeight="400"
d:DesignWidth="600"
mc:Ignorable="d">
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
</UserControl.Resources>
<Grid Background="#FFFFFF">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="#F0F0F0" BorderBrush="#DDDDDD" BorderThickness="0,0,0,1">
<TextBlock
Margin="4,2"
HorizontalAlignment="Left"
VerticalAlignment="Center"
FontWeight="SemiBold"
Foreground="#333333"
Text="实时图像" />
</Border>
<Grid Grid.Row="1" x:Name="ImageAreaGrid">
<roi:PolygonRoiCanvas
x:Name="RoiCanvas"
ImageSource="{Binding ImageSource}"
IsImagePanEnabled="{Binding IsImagePanEnabled}"
IsWheelZoomEnabled="{Binding IsWheelZoomEnabled}"
ScaleBarMmPerPixel="0.139"
ShowScaleBar="{Binding DataContext.IsScaleBarVisible, RelativeSource={RelativeSource AncestorType=Window}}">
<roi:PolygonRoiCanvas.Background>
<DrawingBrush TileMode="Tile" Viewport="0,0,16,16" ViewportUnits="Absolute">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="#FFFFFF">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,16,16" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#E8E8E8">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0,8,8" />
<RectangleGeometry Rect="8,8,8,8" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</roi:PolygonRoiCanvas.Background>
</roi:PolygonRoiCanvas>
<!-- 十字辅助线叠加层(覆盖整个预览区域) -->
<Canvas x:Name="CrosshairOverlay"
IsHitTestVisible="False"
Visibility="Collapsed" />
<!-- 鼠标跟随蓝色十字线叠加层(实时关闭时显示) -->
<Canvas x:Name="MouseCrosshairOverlay"
IsHitTestVisible="False"
Visibility="Collapsed" />
<!-- 灰度直方图叠加层 -->
<histogram:ImageHistogramControl
x:Name="HistogramOverlay"
Width="200"
Height="150"
Margin="4"
Background="#CCFFFFFF"
IsHitTestVisible="False"
IsVisible="{Binding IsHistogramVisible}"
DisplayPosition="{Binding HistogramCorner}" />
<!-- 信息叠加层 -->
<Border
Margin="12"
Padding="10,8"
MinWidth="132"
MaxWidth="220"
Background="#CCFFFFFF"
BorderBrush="#99000000"
BorderThickness="1"
CornerRadius="4"
IsHitTestVisible="False"
Visibility="{Binding IsInfoOverlayVisible, Converter={StaticResource BoolToVisibilityConverter}}">
<Border.Style>
<Style TargetType="Border">
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Bottom" />
<Style.Triggers>
<DataTrigger Binding="{Binding InfoOverlayCorner}" Value="TopLeft">
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Top" />
</DataTrigger>
<DataTrigger Binding="{Binding InfoOverlayCorner}" Value="TopRight">
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Top" />
</DataTrigger>
<DataTrigger Binding="{Binding InfoOverlayCorner}" Value="BottomLeft">
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Bottom" />
</DataTrigger>
<DataTrigger Binding="{Binding InfoOverlayCorner}" Value="BottomRight">
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Bottom" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBlock
FontFamily="Consolas"
FontSize="11"
Foreground="#222222"
LineHeight="13"
Text="{Binding InfoOverlayText}"
TextAlignment="Right"
TextWrapping="NoWrap" />
</Border>
</Grid>
</Grid>
</UserControl>