391 lines
29 KiB
XML
391 lines
29 KiB
XML
<UserControl x:Class="MilUI.CameraView"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
|
|
xmlns:local="clr-namespace:MilUI"
|
|
xmlns:view="clr-namespace:Aurora.View;assembly=Aurora"
|
|
IsVisibleChanged="UserControl_IsVisibleChanged"
|
|
Background="Transparent"
|
|
d:DataContext="{d:DesignInstance Type=local:CameraViewModel}"
|
|
mc:Ignorable="d">
|
|
<UserControl.Resources>
|
|
<ResourceDictionary>
|
|
<local:ViewTypeToVisibilityConverter x:Key="visibilityConverter"/>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource MahApps.Brushes.ThemeForeground}"/>
|
|
</Style>
|
|
</ResourceDictionary>
|
|
</UserControl.Resources>
|
|
|
|
<Border x:Name="bdCamView" BorderBrush="{DynamicResource AuroraVision.Brushes.Window.BorderBrush}" CornerRadius="8" Background="{DynamicResource AuroraVision.Brushes.Window.Background}"
|
|
BorderThickness="1" Margin="3">
|
|
<DockPanel Margin="5">
|
|
<DockPanel DockPanel.Dock="Top">
|
|
<Viewbox DockPanel.Dock="Right" Stretch="Uniform" MaxHeight="30" MinHeight="10" MaxWidth="30" MinWidth="10">
|
|
<Viewbox.Visibility>
|
|
<MultiBinding Converter="{StaticResource visibilityConverter}">
|
|
<Binding Path="IsCollapsed"/>
|
|
<Binding Path="ActualWidth" ElementName="bdCamView"/>
|
|
<Binding Path="Name" ElementName="ExpandBtn"/>
|
|
</MultiBinding>
|
|
</Viewbox.Visibility>
|
|
<Button Style="{StaticResource styleBtnNormalCamTool}" Name="ExpandBtn"
|
|
Command="{Binding ButtonCommandExpand}"
|
|
ToolTip="Button Stretch.">
|
|
<Image x:Name="imgStretch"
|
|
Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_expand.png"/>
|
|
</Button>
|
|
</Viewbox>
|
|
<Viewbox DockPanel.Dock="Right" Stretch="Uniform" MaxHeight="36" MinHeight="10" HorizontalAlignment="Right" Name="Buttons">
|
|
<Viewbox.Visibility>
|
|
<MultiBinding Converter="{StaticResource visibilityConverter}">
|
|
<Binding Path="IsCollapsed"/>
|
|
<Binding Path="ActualWidth" ElementName="bdCamView"/>
|
|
<Binding Path="Name" ElementName="Buttons"/>
|
|
</MultiBinding>
|
|
</Viewbox.Visibility>
|
|
<StackPanel x:Name="spButtonBar" Orientation="Horizontal" Margin="0,0,2,3">
|
|
<!--Camera Device Setting Button-->
|
|
<Button Style="{StaticResource styleBtnNormalCamTool}"
|
|
Command="{Binding ButtonCommandSetCamDevice}"
|
|
x:Name="btnCamDevice" ToolTip="Set camera device.">
|
|
<Image x:Name="imgCamDevice"
|
|
Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_setting.png"/>
|
|
</Button>
|
|
|
|
<!--Light Setting Button-->
|
|
<Button Style="{StaticResource styleBtnNormalCamTool}"
|
|
Command="{Binding ButtonCommandSetLight}"
|
|
x:Name="btnLight" ToolTip="Set light.">
|
|
<Image x:Name="imgLight"
|
|
Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_light.png"/>
|
|
</Button>
|
|
|
|
<!--Grab Button-->
|
|
<Button Style="{StaticResource styleBtnNormalCamTool}"
|
|
x:Name="btnGrab" Command="{Binding ButtonCommandGrab}" ToolTip="Grab image.">
|
|
<Image x:Name="imgGrab"
|
|
Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_grab.png"/>
|
|
</Button>
|
|
|
|
<!--Start Live Button-->
|
|
<Button Style="{StaticResource styleBtnNormalCamTool}"
|
|
Command="{Binding ButtonCommandStartLive}"
|
|
x:Name="btnLiveStart" ToolTip="Turn on camera live.">
|
|
<Image x:Name="imgLiveStart"
|
|
Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_live.png"/>
|
|
</Button>
|
|
|
|
<!--Stop Live Button-->
|
|
<Button Style="{StaticResource styleBtnGreenCamTool}"
|
|
Command="{Binding ButtonCommandStopLive}"
|
|
Visibility="Collapsed"
|
|
x:Name="btnLiveStop" ToolTip="Turn off camera live.">
|
|
<Image x:Name="imgLiveStop"
|
|
Margin="0,0,0,2" Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_live.png"/>
|
|
</Button>
|
|
|
|
<!--Grid Mode Button-->
|
|
<Button x:Name="btnGridModeStart"
|
|
Style="{StaticResource styleBtnNormalCamTool}" ToolTip="Load grid mode.">
|
|
<b:Interaction.Triggers>
|
|
<b:EventTrigger EventName="Click">
|
|
<b:ChangePropertyAction TargetName="gridContextMenu"
|
|
PropertyName="IsOpen"
|
|
Value="True"/>
|
|
</b:EventTrigger>
|
|
</b:Interaction.Triggers>
|
|
<Button.ContextMenu>
|
|
<ContextMenu x:Name="gridContextMenu">
|
|
<MenuItem Click="OnGridMode_Wide">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Grid], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Wide], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdGrid_Wide" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_grid_wide.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnGridMode_Narrow">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Grid], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Narrow], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdGrid_Narrow" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_grid_narrow.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnGridMode_Wide_ErrRotation">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Grid], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Wide], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [ErrRotation], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdGrid_Wide_ErrRotation" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_grid_wide.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnGridMode_Narrow_ErrRotation">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Grid], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Narrow], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [ErrRotation], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdGrid_Narrow_ErrRotation" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_grid_narrow.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</ContextMenu>
|
|
</Button.ContextMenu>
|
|
<Image x:Name="imgGridModeStart" Height="21" Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_grid.png"/>
|
|
</Button>
|
|
|
|
<!--Ruler Mode Button-->
|
|
<Button x:Name="btnRulerModeStart"
|
|
Style="{StaticResource styleBtnNormalCamTool}" ToolTip="Load ruler mode.">
|
|
<b:Interaction.Triggers>
|
|
<b:EventTrigger EventName="Click">
|
|
<b:ChangePropertyAction TargetName="rulerContextMenu"
|
|
PropertyName="IsOpen"
|
|
Value="True"/>
|
|
</b:EventTrigger>
|
|
</b:Interaction.Triggers>
|
|
<Button.ContextMenu>
|
|
<ContextMenu x:Name="rulerContextMenu">
|
|
<MenuItem Click="OnRulerMode_DistanceAndAngle">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Distance], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="&"/>
|
|
<Run Text="{Binding [Angle], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdDistanceAndAngle" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_ruler.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnRulerMode_Position">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Position], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdPosition" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_position.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnRulerMode_Circle">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Circle], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdCircle" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_circle_radius.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnRulerMode_MovePosition">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Move], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Position], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdMovePosition" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_move_target.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnRulerMode_Clear">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Clear], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdClear" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_eraser.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</ContextMenu>
|
|
</Button.ContextMenu>
|
|
<Image x:Name="imgRulerModeStart" Height="21" Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_ruler.png"/>
|
|
</Button>
|
|
|
|
<!--Image Load & Save Mode Button-->
|
|
<Button x:Name="btnLoadAndSaveImage"
|
|
Style="{StaticResource styleBtnNormalCamTool}" ToolTip="Load and save image">
|
|
<b:Interaction.Triggers>
|
|
<b:EventTrigger EventName="Click">
|
|
<b:ChangePropertyAction TargetName="loadAndSaveImageContextMenu"
|
|
PropertyName="IsOpen"
|
|
Value="True"/>
|
|
</b:EventTrigger>
|
|
</b:Interaction.Triggers>
|
|
<Button.ContextMenu>
|
|
<ContextMenu x:Name="loadAndSaveImageContextMenu">
|
|
<MenuItem Click="OnLoadImage">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Load], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Image], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdLoadImage" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_upload.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnSaveImage">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Save], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Image], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdSaveImage" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_download.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Click="OnSaveOverlay">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Save], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Overlay], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdSaveOverlay" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_download.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</ContextMenu>
|
|
</Button.ContextMenu>
|
|
<Image x:Name="imgLoadAndSaveImage" Height="25" Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_photo.png"/>
|
|
</Button>
|
|
|
|
<!--Find Mark Button-->
|
|
<Button Style="{StaticResource styleBtnNormalCamTool}"
|
|
Command="{Binding ButtonCommandFindMark}"
|
|
x:Name="btnFindMark" ToolTip="Find mark position."
|
|
Visibility="Collapsed">
|
|
<Image x:Name="imgFindMark" Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_find.png"/>
|
|
</Button>
|
|
|
|
<!--Fit Image Button-->
|
|
<!--<Button Style="{StaticResource styleBtnNormalCamTool}"
|
|
Command="{Binding ButtonCommandFitImage}"
|
|
x:Name="btnFitImage" ToolTip="Fit image to display.">
|
|
<Image x:Name="imgFitImage" Height="21" Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_fit.png"/>
|
|
</Button>-->
|
|
<Button x:Name="btnFitImageAndShowCamWindow"
|
|
Style="{StaticResource styleBtnNormalCamTool}" ToolTip="Fit image or show cam window.">
|
|
<b:Interaction.Triggers>
|
|
<b:EventTrigger EventName="Click">
|
|
<b:ChangePropertyAction TargetName="fitImageAndShowCamWindowContextMenu"
|
|
PropertyName="IsOpen"
|
|
Value="True"/>
|
|
</b:EventTrigger>
|
|
</b:Interaction.Triggers>
|
|
<Button.ContextMenu>
|
|
<ContextMenu x:Name="fitImageAndShowCamWindowContextMenu">
|
|
<MenuItem Click="OnFitImage">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Fit], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Image], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdFitImage" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_fit_2.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem x:Name="menuShowCamWindow" Click="OnShowCamWindow">
|
|
<MenuItem.Header>
|
|
<TextBlock>
|
|
<Run Text="{Binding [Show], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Cam], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
<Run Text="{Binding [Window], Source={StaticResource langTokens}, Mode=OneWay}"/>
|
|
</TextBlock>
|
|
</MenuItem.Header>
|
|
<MenuItem.Icon>
|
|
<Border x:Name="bdShowCamWindow" Background="White" CornerRadius="5" Margin="2">
|
|
<Image Style="{StaticResource styleImgContextMenuItemIcon}" Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_maximize.png"/>
|
|
</Border>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</ContextMenu>
|
|
</Button.ContextMenu>
|
|
<Image x:Name="imgFitImage" Height="21" Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_fit.png"/>
|
|
</Button>
|
|
|
|
<!--Switch Cam View Button-->
|
|
<Button Style="{StaticResource styleBtnNormalCamTool}"
|
|
Command="{Binding ButtonCommandSwitchCamView}"
|
|
x:Name="btnSwitchCamView" ToolTip="Switch camera view.">
|
|
<Image x:Name="imgSwitchCamView" Width="23" Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/img_arrow_right.png"/>
|
|
</Button>
|
|
|
|
<Button Style="{StaticResource styleBtnNormalCamTool}"
|
|
Command="{Binding ButtonCommandCollapse}"
|
|
x:Name="btnCollapse" ToolTip="Button Collapse.">
|
|
<Button.Visibility>
|
|
<MultiBinding Converter="{StaticResource visibilityConverter}">
|
|
<Binding Path="IsCollapsed"/>
|
|
<Binding Path="ActualWidth" ElementName="bdCamView"/>
|
|
<Binding Path="Name" ElementName="btnCollapse"/>
|
|
</MultiBinding>
|
|
</Button.Visibility>
|
|
<Image x:Name="imgCollapse"
|
|
Style="{StaticResource styleImgCamTool}" Source="pack://application:,,,/VisionCommonUI;component/Icons/icon_collapse.png"/>
|
|
</Button>
|
|
</StackPanel>
|
|
</Viewbox>
|
|
<Viewbox Stretch="Uniform" MaxHeight="21" MinHeight="10" Name="DisplayName">
|
|
<Viewbox.Visibility>
|
|
<MultiBinding Converter="{StaticResource visibilityConverter}">
|
|
<Binding Path="IsCollapsed"/>
|
|
<Binding Path="ActualWidth" ElementName="bdCamView"/>
|
|
<Binding Path="Name" ElementName="DisplayName"/>
|
|
</MultiBinding>
|
|
</Viewbox.Visibility>
|
|
<TextBlock x:Name="tbDisplayName" Text="{Binding DisplayName}"
|
|
FontSize="20" Margin="4,0,0,4"/>
|
|
</Viewbox>
|
|
</DockPanel>
|
|
<local:CameraDisplay x:Name="milCameraDisplay"/>
|
|
</DockPanel>
|
|
</Border>
|
|
</UserControl> |