WPF-图像上的按钮在运行时移动

WPF-图像上的按钮在运行时移动,wpf,button,rendering,Wpf,Button,Rendering,我有一个程序,显示一个网格,其中包含一个图像和3个按钮。在Visual Studio designer中,按钮的大小已调整为适合单独的圆圈,每个圆圈的直径约为1/4。当我运行程序时,每个按钮都向下和向右移动,大约为按钮宽度的1/2。如果我为每个按钮添加一个明确的宽度和高度,我可以保持大小不变,但是按钮仍然稍微向右移动,甚至可能稍微向下移动 我的猜测是,这与Windows如何在屏幕上显示图像有关,并且这种缩放/定位没有应用于按钮。如果是这样,我不知道如何纠正这个问题 如果您有任何关于如何纠正此问题

我有一个程序,显示一个网格,其中包含一个图像和3个按钮。在Visual Studio designer中,按钮的大小已调整为适合单独的圆圈,每个圆圈的直径约为1/4。当我运行程序时,每个按钮都向下和向右移动,大约为按钮宽度的1/2。如果我为每个按钮添加一个明确的宽度和高度,我可以保持大小不变,但是按钮仍然稍微向右移动,甚至可能稍微向下移动

我的猜测是,这与Windows如何在屏幕上显示图像有关,并且这种缩放/定位没有应用于按钮。如果是这样,我不知道如何纠正这个问题

如果您有任何关于如何纠正此问题的想法,我们将不胜感激

克里斯

我的XAML代码:


将图像的“拉伸”属性设置为“无”,以防止调整图像大小

您已通过设置按钮的边距来定位按钮。一旦调整窗口的大小,它们的位置和大小就会改变

将画布添加到网格中,并使用绝对定位画布将图像和按钮放在画布上。Left=。。。Canvas.Top=

如果在执行此操作后,您不喜欢结果,因为您仍然希望调整图像的大小并同步移动按钮,则可以将画布包装成一个可缩放的形状

编辑

此解决方案包括通过Viewbox的良好缩放,但也可以将其删除


请整理你所有的帖子。如果您想对我的答案发表意见,请将其作为我的答案的注释。如果您想添加到您的问题中,请编辑该问题。

您好,Erno,谢谢您的回复。我已经将图像和按钮放置在画布中,按钮现在呈现在设计器中显示的相同位置,这正是我想要的。出现了一个新问题。最初显示图像时,图像不再从左向右居中,而是与屏幕左侧对齐。图像的“拉伸”属性无法纠正问题,包括将其完全删除。有什么想法吗?Chris@Chris-这应该是对Emo答案的评论和对您问题的编辑。请阅读并欢迎访问SO。我似乎无法对您的帖子发表评论。只有这一个是这样的。一切都很好,但现在按钮太大了。如果我把它们的高度/宽度降低到5以下,按钮就会消失。此外,边界现在大得多,我似乎无法改变它们。在上面提交的原始XAML中,我甚至可以使按钮透明不透明度,并且在光标上方的鼠标上会发生变化。现在,如果我将“不透明度”设置为0,按钮将显示,但光标在鼠标上方不再改变。@chris,如果不访问您的代码,不知道您到底想要什么,就很难理解发生了什么。你能提供一个下载的代码和一个很好的效果描述你正在寻找?
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="MainWindow"

    Height="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Height}"

    Width="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Width}"

    WindowStartupLocation="CenterScreen"

    Background="CornflowerBlue"

    ResizeMode="CanMinimize"

    >

<Window.Resources>

    <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">

        <Setter Property="Background" Value="Black"/>

        <Setter Property="Opacity" Value="1"/>

        <Style.Triggers>

            <Trigger Property="IsMouseOver" Value="True">

                <Setter Property="Cursor" Value="Hand"/>

            </Trigger>

        </Style.Triggers>

     </Style>

</Window.Resources>

<Grid Name="grid1">

    <Image Name="image" Source="D:\CEP\Image1.jpg" Stretch="Uniform">

    </Image>

    <Button Margin="494,0,1155,801" Click="button_407_Click"></Button>

    <Button Margin="339,107,1310,856" />

    <Button Margin="401,102,1248,860" />

</Grid>
<Grid>
    <Viewbox>
        <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
            <Image Source="Images\wp_1680.jpg" Width="300" Height="200" 
                    HorizontalAlignment="Center" VerticalAlignment="Center"/>
            <Canvas Width="300" Height="200"
                    HorizontalAlignment="Center" VerticalAlignment="Center">
                <Button Canvas.Top="25" Canvas.Left="50" Content="OK"/>
                <Button Canvas.Top="125" Canvas.Left="150" Content="Cancel"/>
            </Canvas>
        </Grid>
    </Viewbox>
</Grid>