web-dev-qa-db-ja.com

WPF:画像を元のサイズで表示する方法は?

WPFでの画像の表示に問題があります。

ここに私のコードがあります:

<Button HorizontalAlignment="Left" Grid.Column="1" Grid.Row="5" Margin="0,5">
        <Button.Content>
            <StackPanel Orientation="Horizontal" Margin="10,0">
                <Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24" />
                <TextBlock Text="添加" />
            </StackPanel>
        </Button.Content>
    </Button>

元のサイズが32 * 32のイメージがありますが、上記のコードを実行すると、イメージは元のサイズを超えてすべてのスペースを埋めるように拡大されます。また、「ストレッチ」プロパティを「なし」に設定しましたが、機能しないようです。

だから、この問題をどのように修正できますか?ありがとうございました!

96
jiluo

ここ も同様の質問です。一般的にStretch="None"で十分です。

また、DPIがメタデータに画像セットを持っていることも非常に重要です。画像のDPIがモニターのDPI(通常は96)、 WPFはDPIに依存しないように自動的に画像のサイズを変更します

123
Paya
<Image Source="Images/Background.png" UseLayoutRounding="True" SnapsToDevicePixels="True" Width="600" Height="800" Stretch="Fill" />

これは私にとってはうまくいきます。600x800 pixelsおよび96dpi

@ rishad2m8サイズが不明な場合は、 https://msdn.Microsoft.com/en-us/library/system.drawing.image.size(v = vs。 110).aspx 推測します。

幅や高さを指定しないでください。代わりに次のように使用してください。

<Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" />
6
VoodooChild

Payaの答えに追加:WPFがモニターの解像度に適応しようとする試みを補正するには、WidthHeightをファイルの元のサイズに設定し、Stretch="Fill"。これは私のために働いた。

3

画像を元のサイズで表示したいが、画像サイズがわからない場合、UIElementの背景として画像を設定するのが最善の方法だと思います。このような:

    <Button>
        <Button.Background>
            <ImageBrush ImageSource="/images/user_add.png" Stretch="None"/>
        </Button.Background>
    </Button>
0
shirley