В нашем исследовательском проекте мы размещаем unity.exe в пользовательском контроле приложения WPF. Приложение WPF всегда открыто в развернутом состоянии. 3D-символ единицы отображается растянутым при первой загрузке, а затем отображается нормально, когда я изменяю размер окна (обычно отображается даже в развернутом состоянии). Как мы можем показывать символы единства без растяжения в первый раз, когда окно wpf загружается впервые?
до изменения размера:
после изменения размера:
Я также использовал универсальное свойство viewBox, но оно не сработало. Я также использовал код для поддержания соотношения сторон содержимого окна, но он не работал. Пожалуйста, руководство Спасибо!
Код XAML файла:
<Window x:Class="OpenFaceOffline.MainWindow"
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:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:Sys="clr-namespace:System;assembly=mscorlib"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:OpenFaceOffline"
WindowState="Normal"
Title="Face Tracking" Height="900" Width="1900" MinWidth="810" MinHeight="600" Closing="Window_Closing" WindowStartupLocation="CenterScreen" SizeToContent="WidthAndHeight" >
<!--<Window.Resources>
<DataTemplate x:Name="ViewTemplate" DataType="{x:Type OpenFaceOffline:UnityHost}" >
<local:UnityControl DataContext="{Binding}"></local:UnityControl>
</DataTemplate>
</Window.Resources>-->
<Grid Name="MainGrid" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Border Grid.Row="1" Grid.Column="5">
<Label></Label>
</Border>
<!--<Border Name="VideoBorder" Grid.Row="0" Grid.ColumnSpan="2" Grid.Column="0" BorderBrush="Black" BorderThickness="1" Background="LightGray" Margin="5,5,0,0">
<OpenFaceOffline:OverlayImage x:Name="overlay_image" />
</Border>-->
<Grid Name="VideoBorder" Grid.Row="0" Grid.Column="0" Background="LightGray" Margin="5,5,0,0">
<local:OverlayImage x:Name="overlay_image" />
</Grid>
<Grid Name="VideoBorder1" Grid.Row="0" Grid.Column="1" Background="LightGray" Margin="5,5,0,0">
<local:SimpleImage x:Name="AlignedFace" Stretch="Fill" Height="470" Width="500" VerticalAlignment="Bottom" Margin="10,10,0,0" >
</local:SimpleImage>
</Grid>
<Grid Name="VideoBorder2" Grid.Row="0" Grid.Column="2" Background="LightGray" Margin="5,5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"></RowDefinition>
<RowDefinition Height="1*"></RowDefinition>
<RowDefinition Height="25"></RowDefinition>
</Grid.RowDefinitions>
<GroupBox Grid.Row="0" Grid.Column="0" Header="Face" HorizontalAlignment="Center" Height="200" Width="200" VerticalAlignment="Top">
<Grid>
<Image Name="prface" Width="180" Stretch="Fill" VerticalAlignment="Top" Height="140"></Image>
<CheckBox Name="faceselect" VerticalAlignment="Bottom" HorizontalAlignment="Right" IsChecked="True">Pick</CheckBox>
</Grid>
</GroupBox>
<GroupBox Grid.Row="0" Grid.Column="1" Header="Model 1" HorizontalAlignment="Center" Height="200" Width="200" VerticalAlignment="Top">
<Grid>
<Image Name="prmodel1" Width="180" Stretch="Fill" VerticalAlignment="Top" Height="140"></Image>
<CheckBox Name="selectmodel1" VerticalAlignment="Bottom" HorizontalAlignment="Right" IsChecked="True">Pick</CheckBox>
</Grid>
</GroupBox>
<GroupBox Grid.Row="1" Grid.Column="0" Header="Model 2" HorizontalAlignment="Center" Height="200" Width="200" VerticalAlignment="Top">
<Grid>
<Image Name="prmodel2" Width="180" Stretch="Fill" VerticalAlignment="Top" Height="140"></Image>
<CheckBox Name="selectmodel2" VerticalAlignment="Bottom" HorizontalAlignment="Right" IsChecked="True">Pick</CheckBox>
</Grid>
</GroupBox>
<GroupBox Grid.Row="1" Grid.Column="1" Header="Model 3" HorizontalAlignment="Center" Height="200" Width="200" VerticalAlignment="Top">
<Grid>
<Image Name="prmodel3" Width="180" Stretch="Fill" VerticalAlignment="Top" Height="140"></Image>
<CheckBox Name="selectmodel3" VerticalAlignment="Bottom" HorizontalAlignment="Right" IsChecked="True">Pick</CheckBox>
</Grid>
</GroupBox>
<StackPanel Orientation="Horizontal" Margin="0" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2">
<TextBlock FontWeight="Bold" FontSize="16" >Are You want to Print Picture</TextBlock>
<Button Name="NoPrint" Width="55" Margin="50 0" HorizontalAlignment="Right" Click="ResumeButton_Click" FontWeight="Bold">NO</Button>
<Button Name="Print" Width="55" HorizontalAlignment="Right" Padding="3" Click="Print_Click" FontWeight="Bold">Print</Button>
</StackPanel>
</Grid>
<Border Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="1" Margin="5,5,0,0">
<UserControl x:Name="UnityControl" Content="{Binding}" >
</UserControl>
</Border>
</Grid>