WPFでキャンバスの背景を整列するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/269436

  •  06-07-2019
  •  | 
  •  

質問

キャンバスの背景を会社のロゴの画像に設定しました。この画像をキャンバスの右下隅に揃えたいと思います。
これを行うことは可能ですか、それとも画像を子としてキャンバスに追加する必要がありますか?キャンバスのすべての子が異なる方法で処理されるため、このプログラムでは機能しません。

ありがとう

役に立ちましたか?

解決

これは機能しますか? (とにかくうまくいきました。)

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

他のヒント

AFAIK WPF Canvasでは、絶対座標を使用して子UI要素を配置する必要があります。 右下に固定された効果を達成するには、子のImage要素が常に固定されるように、ウィンドウサイズ変更イベントを処理し、Top、Left座標を再計算して適用する必要があると思います右下隅。

<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>

そのようにグリッドコントロール内にキャンバスと画像を含めるのはどうですか?

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

これは、キャンバス内の境界線を使用して画像を揃える私のソリューションです。このソリューションは、キャンバスのサイズが変更されたときにうまく機能します。

<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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top