Как вы можете выровнять фон холста в WPF? - PullRequest
6 голосов
/ 06 ноября 2008

Я установил фон холста для изображения логотипа компании. Я хочу, чтобы это изображение было выровнено по правому нижнему углу холста.
Возможно ли это сделать или потребуется добавить изображение на холст в детстве? Это не будет работать с этой программой, поскольку все дочерние элементы canvas обрабатываются по-разному.

Спасибо

Ответы [ 4 ]

16 голосов
/ 07 ноября 2008

Будет ли это работать? (Во всяком случае, у меня это сработало.)

  <Canvas>
    <Canvas.Background>
      <ImageBrush ImageSource="someimage.jpg" AlignmentX="Right" 
          AlignmentY="Bottom" Stretch="None" />
    </Canvas.Background>
  </Canvas>
0 голосов
/ 25 марта 2013

Это мое решение с использованием рамки внутри холста для выравнивания изображения. Это решение хорошо работает при изменении размера холста:

<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>
0 голосов
/ 07 ноября 2008

Как насчет содержания холста и изображения внутри элемента управления Grid следующим образом?

<Window ...>
  <Grid>
    <Canvas/>
    <Image HorizontalAlignment="Right" VerticalAlignment="Bottom" .../>
  <Grid>
</Window>
0 голосов
/ 06 ноября 2008

AFAIK WPF Canvas требует, чтобы дочерние элементы пользовательского интерфейса располагались с использованием абсолютных координат. Для достижения эффекта привязки к правому нижнему краю, я думаю, вам нужно обработать событие изменения размера окна, пересчитать и применить координаты 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...