Контент пользовательского элемента управления (Unity.exe) растягивается в первый раз и отображается нормально после изменения размера приложения WPF - PullRequest
0 голосов
/ 05 марта 2020

В нашем исследовательском проекте мы размещаем unity.exe в пользовательском контроле приложения WPF. Приложение WPF всегда открыто в развернутом состоянии. 3D-символ единицы отображается растянутым при первой загрузке, а затем отображается нормально, когда я изменяю размер окна (обычно отображается даже в развернутом состоянии). Как мы можем показывать символы единства без растяжения в первый раз, когда окно wpf загружается впервые?

до изменения размера:

enter image description here

после изменения размера:

enter image description here

Я также использовал универсальное свойство 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>

...