【问题标题】:How can you align a canvas background in WPF?如何在 WPF 中对齐画布背景?
【发布时间】:2023-03-08 15:05:01
【问题描述】:

我已将画布背景设置为公司徽标的图像。我希望这张图片与画布的右下角对齐。
是否可以这样做,或者是否需要将图像作为孩子添加到画布中?这不适用于此程序,因为画布的所有子项都以不同方式处理。

谢谢

【问题讨论】:

    标签: wpf canvas alignment


    【解决方案1】:

    AFAIK WPF Canvas 需要使用绝对坐标定位子 UI 元素。 为了实现右下锚定效果,我认为您需要处理窗口调整大小事件,重新计算并应用 Top,Left 坐标,以便子 Image 元素始终坚持右下角。

    <Window x:Class="HelloWPF.Window1" xmlns...
        Title="Window1" Height="300" Width="339">
        <Canvas>
            <Image Canvas.Left="195" Canvas.Top="175" Height="87" Name="image1" Stretch="Fill" Width="122" Source="dilbert2666700071126ni1.gif"/>
        </Canvas>
    </Window>
    

    【讨论】:

    • 嗯,是的,也不是。我正在寻找的解决方案会将 Canvas.Background 图像更改为不同的位置。不是画布的孩子。另外,我相信按照您的描述处理孩子的更简单方法是将 Canvas.Bottom 和 Canvas.Right 设置为 0。那时无需更新。
    • 是的,你是.. 附加属性很难记住.. 所以现在每个孩子都有宽度和高度 + 4 个附加属性,用于名为 Top、Left、Bottom 和 Right 的画布......哎呀! :)
    【解决方案2】:

    像这样在 Grid 控件中包含画布和图像怎么样?

    <Window ...>
      <Grid>
        <Canvas/>
        <Image HorizontalAlignment="Right" VerticalAlignment="Bottom" .../>
      <Grid>
    </Window>
    

    【讨论】:

      【解决方案3】:

      这行得通吗? (无论如何,它对我有用。)

        <Canvas>
          <Canvas.Background>
            <ImageBrush ImageSource="someimage.jpg" AlignmentX="Right" 
                AlignmentY="Bottom" Stretch="None" />
          </Canvas.Background>
        </Canvas>
      

      【讨论】:

      • 正是我需要的。我查看了 ImageBrush 的所有属性,但不知何故我错过了这些。谢谢!
      【解决方案4】:

      这是我使用画布内的边框对齐图像的解决方案。此解决方案在调整画布大小时效果很好:

      <Canvas x:Name="MiCanvas" Height="250" Width="500" Background="Aqua">
          <Border x:Name="MiBorderImage" 
                  Width="{Binding ElementName=MiCanvas, Path=ActualWidth}"
                  Height="{Binding ElementName=MiCanvas, Path=ActualHeight}"
                  Background="Transparent">
              <Image x:Name="MiImage" Source="/GraphicsLibrary/Logos/MiLogo.png"
                     HorizontalAlignment="Right" 
                     VerticalAlignment="Bottom" 
                     Stretch="None" />
          </Border>
       </Canvas>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-21
        • 2020-10-10
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 2014-08-28
        相关资源
        最近更新 更多