2009-12-03 19 views
11

私はWPFに表示してい27 X 27ピクセルイメージが、それはウィンドウのサイズより大きく表示します。XAMLの画像を実際のサイズで表示するにはどうすればよいですか?

実際のサイズを表示するにはどうすればよいですか?

alt text http://www.deviantsart.com/upload/m20dk6.png

XAML:

<Window x:Class="TestImage23434.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <StackPanel x:Name="MainStackPanel"/> 
</Window> 

背後にあるコード:

using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Media.Imaging; 
using System; 

namespace TestImage23434 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 

      TextBlock tb = new TextBlock(); 
      tb.Text = "above image "; 
      MainStackPanel.Children.Add(tb); 

      Image img = new Image(); 
      img.Source = new BitmapImage(new Uri(@"C:\test\circle.png")); 
      img.HorizontalAlignment = HorizontalAlignment.Left; 
      img.VerticalAlignment = VerticalAlignment.Top; 
      MainStackPanel.HorizontalAlignment = HorizontalAlignment.Left; 
      MainStackPanel.VerticalAlignment = VerticalAlignment.Top; 
      MainStackPanel.Children.Add(img); 

      TextBlock tb2 = new TextBlock(); 
      tb2.Text = "below image"; 
      MainStackPanel.Children.Add(tb2); 
     } 
    } 
} 

答えて

19

img.Stretch = Stretch.None

は、Stretch propertyは、すべての利用可能なスペースを埋めるために、画像のサイズを変更しUniformの値を、持っています。

+2

私はストレッチプロパティを使用しなければならないような方法でイメージを使用したことはありません。私はそれが存在することを忘れてしまった。 –

+1

"img.Stretch = Stretch.None"を設定した場合画像が大きすぎると画像の一部が表示されない問題があります。このための解決策 – achukrishnan

2
img.HorizontalAlignment = HorizontalAlignment.Left; 
img.VerticalAlignment = VerticalAlignment.Top; 
img.Stretch = Stretch.None; 

StackPanelのは/ overflいっぱいに伸ばしますそのサイズが指定されていない限り、それが入っているコンテナは何でもありません。マージンやアライメントを何も設定していないので、すべてのデフォルト動作はMargin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"です。単に「Stretch to fill」と入力します。要素の整列/配置は、この問題を解決します。

編集:img.Stretch = Stretch.None;を追加しました。また、サンプルアプリケーションを作成してテストしました。デフォルトでは

+0

アライメントは、表示される画像のサイズにどのように影響しますか? – dtb

+0

標準のアライメントは「ストレッチ」です。サイズには影響しません。 – Heinzi

+0

編集した回答が説明されています。 –

4

これらのヒントのどれも私のために働いていませんでした。いくつかの拘束力のあるトリックが私を邪魔するものです。

<Image Source="yourPic.png" Stretch="UniformToFill" 
Width="{Binding RelativeSource={RelativeSource Self}, Path=Source.PixelWidth}" 
Height="{Binding RelativeSource={RelativeSource Self}, Path=Source.PixelHeight}" /> 

おそらくなしにストレッチを設定できますが、これは、.NET 4.5.1を使用して私のアプリのために働きました。

+0

幅と高さをバインドするには静的なMaxWidth 'と' MaxHeight'と 'Stretch =" Uniform "を使って元のサイズをある程度まで制限しています。受け入れられた回答は、このようなシナリオでは画像の一部のみを表示します。 – grek40

関連する問題