CameraParams.xaml 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. <UserControl x:Class="TeamAAS_VP.Views.Product.CameraParams"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:prism="http://prismlibrary.com/"
  5. xmlns:wf="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
  6. xmlns:vp="clr-namespace:Cognex.VisionPro;assembly=Cognex.VisionPro.Controls"
  7. xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
  8. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  9. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  10. xmlns:vm="clr-namespace:TeamAAS_VP.ViewModels.Product"
  11. xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
  12. xmlns:sys="clr-namespace:System;assembly=mscorlib"
  13. xmlns:uControl="clr-namespace:TeamAAS_VP.Controls"
  14. xmlns:localbehaviors="clr-namespace:TeamAAS_VP.Behaviors"
  15. xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
  16. xmlns:lex="http://wpflocalizeextension.codeplex.com"
  17. lex:LocalizeDictionary.DesignCulture="zh-CN"
  18. lex:ResxLocalizationProvider.DefaultAssembly="TeamAAS-VP"
  19. lex:ResxLocalizationProvider.DefaultDictionary="Lang"
  20. prism:ViewModelLocator.AutoWireViewModel="True"
  21. mc:Ignorable="d"
  22. d:DataContext="{d:DesignInstance Type=vm:CameraParamsViewModel}"
  23. d:Height="600"
  24. d:Width="1024"
  25. d:Background="White"
  26. FontFamily="{DynamicResource DefaultFont}">
  27. <b:Interaction.Triggers>
  28. <b:EventTrigger EventName="Loaded">
  29. <b:InvokeCommandAction Command="{Binding LoadedCommand}" />
  30. </b:EventTrigger>
  31. </b:Interaction.Triggers>
  32. <Grid>
  33. <Grid.RowDefinitions>
  34. <RowDefinition Height="auto" />
  35. <RowDefinition Height="*" />
  36. <RowDefinition Height="auto" />
  37. </Grid.RowDefinitions>
  38. <Button Grid.Row="0"
  39. Content="{materialDesign:PackIcon Kind=ArrowLeftCircle}"
  40. Width="50"
  41. HorizontalAlignment="Left"
  42. VerticalAlignment="Top"
  43. ToolTip="{lex:Loc 返回}"
  44. Style="{StaticResource MaterialDesignIconButton}"
  45. Command="{Binding BackCommand}" />
  46. <StackPanel Grid.Row="0"
  47. Orientation="Horizontal"
  48. Margin="50,0"
  49. VerticalAlignment="Center">
  50. <materialDesign:PackIcon Kind="CubeOutline"
  51. Width="30"
  52. Height="30" />
  53. <TextBlock Text="{Binding SelectProduct.Name}"
  54. VerticalAlignment="Center" />
  55. <TextBlock Text="{lex:Loc 图像源配置,Converter={StaticResource StringFormatConverter},ConverterParameter=' - {0}'}"
  56. VerticalAlignment="Center" />
  57. </StackPanel>
  58. <Border BorderThickness="1,1,1,1"
  59. VerticalAlignment="Bottom"
  60. Height="1">
  61. <Border.BorderBrush>
  62. <VisualBrush>
  63. <VisualBrush.Visual>
  64. <Rectangle StrokeDashArray="4 4"
  65. Stroke="LightGray"
  66. StrokeThickness="1"
  67. Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualWidth}"
  68. Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualHeight}" />
  69. </VisualBrush.Visual>
  70. </VisualBrush>
  71. </Border.BorderBrush>
  72. </Border>
  73. <materialDesign:DrawerHost Grid.Row="1"
  74. OpenMode="Standard"
  75. x:Name="DrawerHost"
  76. d:IsRightDrawerOpen="true"
  77. IsEnabled="{Binding IsAllowEdit}">
  78. <materialDesign:DrawerHost.RightDrawerContent>
  79. <uControl:RobotManual x:Name="robotManual"
  80. Visibility="{Binding IsHaveRobot,Converter={StaticResource BooleanToVisibilityConverter}}" />
  81. </materialDesign:DrawerHost.RightDrawerContent>
  82. <Grid>
  83. <Grid.ColumnDefinitions>
  84. <ColumnDefinition Width="auto" />
  85. <ColumnDefinition Width="*" />
  86. </Grid.ColumnDefinitions>
  87. <Expander Grid.Column="0"
  88. ExpandDirection="Right"
  89. Background="Transparent">
  90. <Expander.Header>
  91. <TextBlock RenderTransformOrigin=".5,.5"
  92. Text="Navigation Description">
  93. <TextBlock.LayoutTransform>
  94. <RotateTransform Angle="90" />
  95. </TextBlock.LayoutTransform>
  96. </TextBlock>
  97. </Expander.Header>
  98. <ScrollViewer>
  99. <StackPanel Margin="8,24,16,24"
  100. Orientation="Vertical">
  101. <Image Source="pack://application:,,,/TeamAAS-VP;component/Resources/Images/4图像采集.png"
  102. Stretch="Uniform"
  103. Width="350"
  104. HorizontalAlignment="Center"
  105. VerticalAlignment="Top" />
  106. <TextBlock Text="{lex:Loc 图像源配置}" />
  107. <TextBlock Foreground="Gray"
  108. TextWrapping="Wrap"
  109. Text="{lex:Loc 图像源配置描述}" />
  110. </StackPanel>
  111. </ScrollViewer>
  112. </Expander>
  113. <Grid Grid.Column="1"
  114. >
  115. <Grid.ColumnDefinitions>
  116. <ColumnDefinition Width="*" />
  117. <ColumnDefinition Width="auto" />
  118. </Grid.ColumnDefinitions>
  119. <Grid Grid.Column="1">
  120. <Grid.RowDefinitions>
  121. <RowDefinition Height="35" />
  122. <RowDefinition Height="35" />
  123. <RowDefinition Height="35" />
  124. <RowDefinition Height="35" />
  125. <RowDefinition Height="35" />
  126. <RowDefinition Height="35" />
  127. <RowDefinition Height="35" />
  128. <RowDefinition Height="35" />
  129. <RowDefinition Height="35" />
  130. <RowDefinition Height="35" />
  131. <RowDefinition Height="35" />
  132. <RowDefinition Height="35" />
  133. <RowDefinition Height="35" />
  134. <RowDefinition Height="35" />
  135. <RowDefinition Height="350" />
  136. </Grid.RowDefinitions>
  137. <Grid.ColumnDefinitions>
  138. <ColumnDefinition Width="auto" />
  139. <ColumnDefinition Width="*" />
  140. </Grid.ColumnDefinitions>
  141. <ToggleButton Grid.Column="1"
  142. HorizontalAlignment="Right"
  143. VerticalAlignment="Top"
  144. Visibility="{Binding IsHaveRobot,Converter={StaticResource BooleanToVisibilityConverter}}"
  145. materialDesign:ToggleButtonAssist.OnContent="{materialDesign:PackIcon Kind=ArrowRight}"
  146. Content="{materialDesign:PackIcon Kind=RobotIndustrial}"
  147. Style="{StaticResource MaterialDesignActionToggleButton}"
  148. ToolTip="{lex:Loc 机器人步进}"
  149. Margin="5,0"
  150. IsChecked="{Binding IsRightDrawerOpen,ElementName=DrawerHost}" />
  151. <TextBlock Text="{lex:Loc 相机参数设置}"
  152. Grid.Row="1"
  153. FontWeight="Bold"
  154. Margin="10"
  155. Grid.ColumnSpan="2" />
  156. <TextBlock Grid.Row="2"
  157. Grid.Column="0"
  158. Margin="5"
  159. VerticalAlignment="Center"
  160. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  161. Text="{lex:Loc 拍照次数,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  162. <mah:NumericUpDown Grid.Row="2"
  163. Grid.Column="1"
  164. Margin="5"
  165. Minimum="0"
  166. Maximum="999985"
  167. Interval="1"
  168. StringFormat="{}{0:N0} "
  169. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  170. Value="{Binding PhotoCount,Mode=TwoWay}" />
  171. <TextBlock Grid.Row="3"
  172. Grid.Column="0"
  173. Margin="5"
  174. VerticalAlignment="Center"
  175. Text="{lex:Loc 曝光时间,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  176. <mah:NumericUpDown Grid.Row="3"
  177. Grid.Column="1"
  178. Margin="5"
  179. Minimum="35"
  180. Maximum="999985"
  181. Interval="1"
  182. StringFormat="{}{0:N0} us"
  183. Value="{Binding ExposureTime,Mode=TwoWay}" />
  184. <TextBlock Grid.Row="4"
  185. Grid.Column="0"
  186. Margin="5"
  187. VerticalAlignment="Center"
  188. Text="{lex:Loc 增益,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  189. <mah:NumericUpDown Grid.Row="4"
  190. Grid.Column="1"
  191. Margin="5"
  192. Minimum="0"
  193. Maximum="63"
  194. Interval="1"
  195. StringFormat="{}{0:N2} db"
  196. Value="{Binding Gain,Mode=TwoWay}" />
  197. <TextBlock Grid.Row="5"
  198. Grid.Column="0"
  199. Margin="5"
  200. VerticalAlignment="Center"
  201. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  202. Text="{lex:Loc 曝光2时间,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  203. <mah:NumericUpDown Grid.Row="5"
  204. Grid.Column="1"
  205. Margin="5"
  206. Minimum="35"
  207. Maximum="999985"
  208. Interval="1"
  209. StringFormat="{}{0:N0} us"
  210. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  211. Value="{Binding ExposureTime2,Mode=TwoWay}" />
  212. <TextBlock Grid.Row="6"
  213. Grid.Column="0"
  214. Margin="5"
  215. VerticalAlignment="Center"
  216. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  217. Text="{lex:Loc 增益2,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  218. <mah:NumericUpDown Grid.Row="6"
  219. Grid.Column="1"
  220. Margin="5"
  221. Minimum="0"
  222. Maximum="63"
  223. Interval="1"
  224. StringFormat="{}{0:N2} db"
  225. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  226. Value="{Binding Gain2,Mode=TwoWay}" />
  227. <TextBlock Grid.Row="7"
  228. Grid.Column="0"
  229. Margin="5"
  230. VerticalAlignment="Center"
  231. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  232. Text="{lex:Loc 第一次拍照光源1,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  233. <mah:NumericUpDown Grid.Row="7"
  234. Grid.Column="1"
  235. Margin="5"
  236. Minimum="0"
  237. Maximum="999985"
  238. Interval="1"
  239. StringFormat="{}{0:N0} "
  240. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  241. Value="{Binding Photo1Light1,Mode=TwoWay}" />
  242. <TextBlock Grid.Row="8"
  243. Grid.Column="0"
  244. Margin="5"
  245. VerticalAlignment="Center"
  246. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  247. Text="{lex:Loc 第一次拍照光源2,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  248. <mah:NumericUpDown Grid.Row="8"
  249. Grid.Column="1"
  250. Margin="5"
  251. Minimum="0"
  252. Maximum="999985"
  253. Interval="1"
  254. StringFormat="{}{0:N2} "
  255. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  256. Value="{Binding Photo1Light2,Mode=TwoWay}" />
  257. <TextBlock Grid.Row="9"
  258. Grid.Column="0"
  259. Margin="5"
  260. VerticalAlignment="Center"
  261. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  262. Text="{lex:Loc 第一次拍照光源3,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  263. <mah:NumericUpDown Grid.Row="9"
  264. Grid.Column="1"
  265. Margin="5"
  266. Minimum="0"
  267. Maximum="999985"
  268. Interval="1"
  269. StringFormat="{}{0:N2} "
  270. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  271. Value="{Binding Photo1Light3,Mode=TwoWay}" />
  272. <TextBlock Grid.Row="10"
  273. Grid.Column="0"
  274. Margin="5"
  275. VerticalAlignment="Center"
  276. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  277. Text="{lex:Loc 第二次拍照光源1,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  278. <mah:NumericUpDown Grid.Row="10"
  279. Grid.Column="1"
  280. Margin="5"
  281. Minimum="0"
  282. Maximum="999985"
  283. Interval="1"
  284. StringFormat="{}{0:N0} "
  285. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  286. Value="{Binding Photo2Light1,Mode=TwoWay}" />
  287. <TextBlock Grid.Row="11"
  288. Grid.Column="0"
  289. Margin="5"
  290. VerticalAlignment="Center"
  291. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  292. Text="{lex:Loc 第二次拍照光源2,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  293. <mah:NumericUpDown Grid.Row="11"
  294. Grid.Column="1"
  295. Margin="5"
  296. Minimum="0"
  297. Maximum="999985"
  298. Interval="1"
  299. StringFormat="{}{0:N2} "
  300. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  301. Value="{Binding Photo2Light2,Mode=TwoWay}" />
  302. <TextBlock Grid.Row="12"
  303. Grid.Column="0"
  304. Margin="5"
  305. VerticalAlignment="Center"
  306. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  307. Text="{lex:Loc 第二次拍照光源3,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
  308. <mah:NumericUpDown Grid.Row="12"
  309. Grid.Column="1"
  310. Margin="5"
  311. Minimum="0"
  312. Maximum="999985"
  313. Interval="1"
  314. StringFormat="{}{0:N2} "
  315. Visibility="{Binding IsPhotosUse,Converter={StaticResource BooleanToVisibilityConverter}}"
  316. Value="{Binding Photo2Light3,Mode=TwoWay}" />
  317. <ScrollViewer Grid.Row="15" Grid.ColumnSpan="2" VerticalScrollBarVisibility="Visible">
  318. <!-- 光源通道列表与调节 -->
  319. <StackPanel Orientation="Vertical" Margin="5" >
  320. <TextBlock Text="{lex:Loc 光源通道列表}"
  321. FontWeight="Bold" />
  322. <ItemsControl ItemsSource="{Binding SelectProcedure.LightChannels}">
  323. <ItemsControl.ItemTemplate>
  324. <DataTemplate>
  325. <Grid>
  326. <Grid.RowDefinitions>
  327. <RowDefinition Height="auto" />
  328. <RowDefinition Height="auto" />
  329. <RowDefinition Height="auto" />
  330. </Grid.RowDefinitions>
  331. <TextBlock Width="120"
  332. Grid.Row="0"
  333. HorizontalAlignment="Left"
  334. VerticalAlignment="Center">
  335. <TextBlock.Text>
  336. <MultiBinding StringFormat="{}{0} . {1}">
  337. <Binding Path="GlobalIndex" />
  338. <Binding Path="Name" />
  339. </MultiBinding>
  340. </TextBlock.Text>
  341. </TextBlock>
  342. <StackPanel Grid.Row="1"
  343. Orientation="Horizontal"
  344. Margin="0,4">
  345. <Slider Minimum="0"
  346. Maximum="255"
  347. Width="200"
  348. Value="{Binding DefaultBrightness,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
  349. <b:Interaction.Behaviors>
  350. <localbehaviors:SliderUserInteractionBehavior UserInteractionCommand="{Binding DataContext.SetChannelBrightnessCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
  351. CommandParameter="{Binding}" />
  352. </b:Interaction.Behaviors>
  353. </Slider>
  354. <TextBlock Text="{Binding DefaultBrightness}"
  355. Width="40"
  356. VerticalAlignment="Center"
  357. Margin="6,0" />
  358. </StackPanel>
  359. <StackPanel Grid.Row="2"
  360. Orientation="Horizontal"
  361. HorizontalAlignment="Right"
  362. Margin="0,4">
  363. <Button Content="打开"
  364. Command="{Binding DataContext.TurnOnCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
  365. CommandParameter="{Binding}"
  366. Margin="0,0,8,0" />
  367. <Button Content="关闭"
  368. Command="{Binding DataContext.TurnOffCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
  369. CommandParameter="{Binding}"
  370. Margin="0,0,8,0" />
  371. </StackPanel>
  372. </Grid>
  373. </DataTemplate>
  374. </ItemsControl.ItemTemplate>
  375. </ItemsControl>
  376. </StackPanel>
  377. </ScrollViewer>
  378. </Grid>
  379. <wf:WindowsFormsHost Grid.Column="0"
  380. Margin="0,40">
  381. <vp:CogRecordDisplay x:Name="display" />
  382. </wf:WindowsFormsHost>
  383. <StackPanel Orientation="Horizontal"
  384. Grid.Column="0"
  385. Margin="5"
  386. Visibility="{Binding IsHaveFeeder,Converter={StaticResource BooleanToVisibilityConverter}}"
  387. VerticalAlignment="Top">
  388. <TextBlock Text="{lex:Loc 光源亮度,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}"
  389. Margin="5,0"
  390. VerticalAlignment="Center" />
  391. <Button Width="25"
  392. Height="25"
  393. Margin="5,0"
  394. Content="{materialDesign:PackIcon Kind=Minus}"
  395. Style="{StaticResource MaterialDesignIconForegroundButton}"
  396. Command="{Binding LightValueSubCommand}" />
  397. <Slider x:Name="lightSlider"
  398. Maximum="100"
  399. Minimum="1"
  400. Width="100"
  401. Value="{Binding SelectProcedure.LightValue}"
  402. Height="20"
  403. VerticalAlignment="Center">
  404. <b:Interaction.Triggers>
  405. <b:EventTrigger EventName="ValueChanged">
  406. <b:InvokeCommandAction Command="{Binding LightValueChangedCommand}"
  407. CommandParameter="{Binding ElementName=lightSlider,Path=Value}" />
  408. </b:EventTrigger>
  409. </b:Interaction.Triggers>
  410. </Slider>
  411. <Button Width="25"
  412. Height="25"
  413. Margin="5,0"
  414. Content="{materialDesign:PackIcon Kind=Plus}"
  415. Style="{StaticResource MaterialDesignIconForegroundButton}"
  416. Command="{Binding LightValueAddCommand}" />
  417. <TextBlock Text="{Binding ElementName=lightSlider,Path=Value,Mode=TwoWay,StringFormat={}{0:F0}}"
  418. VerticalAlignment="Center" />
  419. </StackPanel>
  420. <StackPanel Grid.Column="0"
  421. HorizontalAlignment="Left"
  422. VerticalAlignment="Bottom"
  423. Orientation="Horizontal">
  424. <Button Grid.Column="0"
  425. Content="{lex:Loc 开始采集}"
  426. IsEnabled="{Binding IsAllowEdit}"
  427. MinWidth="100"
  428. materialDesign:ButtonAssist.CornerRadius="10"
  429. Style="{StaticResource MaterialDesignRaisedButton}"
  430. Command="{Binding StartGrabbingCommand}" />
  431. <Button Grid.Column="0"
  432. Content="{lex:Loc 停止采集}"
  433. IsEnabled="{Binding IsAllowEdit}"
  434. MinWidth="100"
  435. Margin="10,0"
  436. materialDesign:ButtonAssist.CornerRadius="10"
  437. Style="{StaticResource MaterialDesignRaisedButton}"
  438. Command="{Binding StopGrabbingCommand}" />
  439. <TextBlock Text="{Binding Message}"
  440. VerticalAlignment="Center"
  441. Foreground="Gray" />
  442. </StackPanel>
  443. </Grid>
  444. </Grid>
  445. </materialDesign:DrawerHost>
  446. <StackPanel Grid.Row="2"
  447. Orientation="Horizontal"
  448. HorizontalAlignment="Center"
  449. VerticalAlignment="Center"
  450. Margin="20">
  451. <Button Content="{lex:Loc 下一步}"
  452. IsEnabled="{Binding IsAllowEdit}"
  453. MinWidth="100"
  454. HorizontalAlignment="Center"
  455. VerticalAlignment="Center"
  456. materialDesign:ButtonAssist.CornerRadius="10"
  457. Style="{StaticResource MaterialDesignRaisedButton}"
  458. Command="{Binding NextCommand}" />
  459. </StackPanel>
  460. </Grid>
  461. </UserControl>