2015-10-08 12 views
5

イメージをキャンバスの中に入れて、それをウィンドウに合わせたいと思います。キャンバスが空の場合、キャンバスはウィンドウ内でサイズ変更されますがキャンバスはウィンドウにフィットしません。私はこの動作を以下に説明します。キャンバスを使用するのは残念なことに、その上に図形を描くためです。どんなアイデアですか?イメージをキャンバス内に伸ばしてください

グッド

<Window x:Class="ImageCropper.Window3" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window3" Height="300" Width="300"> 
    <Border BorderThickness="3" BorderBrush="Red"> 
     <Canvas Background="Blue"> 
     </Canvas> 
    </Border> 
</Window> 

enter image description here

悪い

<Window x:Class="ImageCropper.Window3" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window3" Height="300" Width="300"> 
    <Border BorderThickness="3" BorderBrush="Red"> 
     <Canvas Background="Blue"> 
      <Image Source="asd.png" Stretch="Uniform" /> 
     </Canvas> 
    </Border> 
</Window> 

enter image description here

私は考えていない
+0

あなたのイメージは、ViewBoxをのためのスワップキャンバス面積よりも大きくなっているか、それは同じように使われているように見えるので、とにかく背景をBorderとして使用するのはなぜですか?ImageBrushを使用した背景? –

+0

私はViewBoxでイメージをラップしようとしましたが、それは役に立たず、ボーダーはこの質問のイラストのためのものです。私はそれを通常使っていません。画像は残念ながら背景だけではありません。 – user1121956

+0

だから、あなたはビューボックスのキャンバスを捨て、ビューボックス[stretch](https://msdn.microsoft.com/en-us/library/system.windows.media.stretch%28vs.110%29.aspx)を一様であるか一様であるか?それはうまくいくはずです。あなたが達成しようとしているもののより具体的な例が必要かもしれないと思います。 –

答えて

7

ストレッチWORキャンバスを使ったks。この回答を参照してください。 https://stackoverflow.com/a/6010270/93233

私はそれは次のように動作するように取得することができたしかし:

<Border BorderThickness="3" BorderBrush="Red"> 
    <Canvas Background="Blue" Name="canvas1"> 
     <Image Source="asd.png" Width="{Binding Path=ActualWidth, ElementName=canvas1}" Height="{Binding Path=ActualHeight, ElementName=canvas1}" Stretch="Uniform"/> 
    </Canvas> 
</Border> 
+0

魅力のように動作します。多くのありがとう:) – user1121956

+0

これは不可能である、偉大な、多くの投稿の状態。優れた! – Hans

関連する問題