如果没有直接居中在窗口中,图像就会消失[边距不是" 0"]

时间:2017-02-28 18:03:21

标签: c# .net wpf vb.net xaml

在基于WPF Vb.net的窗口中,我的图像有点问题 如果图像控件不是直接位于窗口中心,边距为0,则不会在运行时显示。

以下是两张图片的XAML代码:

    <Image x:Name="loaderlogo" Height="55" Margin="1825,985,40,40" Width="55" Stretch="Fill"/>
    <Image x:Name="tips" Height="128" Margin="0,732,0,220" Width="1920" Stretch="Fill" Opacity="0.9"/>

两者都包含在具有一行和一列的网格内(创建新窗口时存在的默认网格)。

如果运行此代码,则不会显示这些图像,但如果我设置边距

Margin="0"

它们看起来很好,但是在控制的中心

如果边距不为零(如果我移动图像&#39;位置除了表单的中心以外的任何位置?)如何设置控件仍然会出现?

我用来获取图像文件的代码是:

    UseLayoutRounding = True
    Dim exepath As String = System.AppDomain.CurrentDomain.BaseDirectory
    loaderlogo.Source = New BitmapImage(New Uri(exepath & "loaderlogo.png", UriKind.Absolute))
    tips.Source = New BitmapImage(New Uri(exepath & "tips.png", UriKind.Absolute))

如果死中心,图像工作得很好所以我相信问题在于XAML,但我不确定在哪里。我已经改变了水平/垂直对齐,但只要边距为0,图像仍然会出现在中心。

编辑:下面是我希望控制的位置,左下角是“装载机标记”。窗户上的乐队就是“提示”。控制。

tips band position

loaderlogo position

编辑2:下面是窗口的整个XAML代码:

<Window x:Class="loadingwindow" UseLayoutRounding="True"
    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:local="clr-namespace:applicationname"
    mc:Ignorable="d"
    Title="loadingwindow" Height="1080" Width="1920" AllowsTransparency="True" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" WindowState="Maximized" Loaded="Window_Loaded">
<Window.Triggers>
    <EventTrigger RoutedEvent="Window.Loaded">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation Duration="00:00:01" Storyboard.TargetProperty="Opacity" From="0" To="1" Completed="DoubleAnimation_Completed"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>

</Window.Triggers>
<Grid>
    <Image x:Name="loaderlogo" Height="55" Margin="1825,985,40,40" Width="55" Stretch="Fill"/>
    <Image x:Name="tips" Height="128" Margin="0,732,0,220" Width="1920" Stretch="Fill" Opacity="0.9"/>

</Grid>

1 个答案:

答案 0 :(得分:0)

大边距是定位元素的最差方式。更好的方法是使用正确的布局面板和正确的元素对齐。小边距可以在元素之间添加一些空间。

Grid面板通常与许多RowDefinitionColumnDefinition一起使用。元素放置在不同的行和列中,结果布局适应大小更改

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition/>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="Auto"/>
  </Grid.RowDefinitions>

  <Image x:Name="tips" Grid.Row="1" Height="128" Width="1920" Stretch="Fill" Opacity="0.9"/>
  <Image x:Name="loaderlogo" Grid.Row="2" Height="55" Width="55" Margin="10"
         HorizontalAlignment="Right" Stretch="Fill"/>
</Grid>