wake-up-neo.com

WPF: Wie zeige ich ein Bild in Originalgröße an?

Ich habe ein Problem mit der Anzeige von Bildern in WPF.

Hier ist mein Code:

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

Ich habe ein Bild mit der Originalgröße 32 * 32, aber wenn ich den obigen Code ausführe, wird das Bild gestreckt, um den gesamten Raum über seine Originalgröße hinaus auszufüllen. Ich habe auch die "Stretch" -Eigenschaft auf "None" gesetzt, aber es scheint, dass es nicht funktioniert.

Wie kann ich dieses Problem beheben? Vielen Dank!

96
jiluo

Hier ist eine ähnliche Frage. Grundeinstellung Stretch="None" ist genug.

Es ist auch sehr wichtig, welche DPI das Bild in Metadaten gesetzt hat. Es hat eine Weile gedauert, bis ich herausgefunden habe, ob sich die DPI des Bildes von der DPI unterscheidet DPI des Monitors (normalerweise 96), WPF ändert die Bildgröße automatisch, da versucht wird, DPI-unabhängig zu sein .

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

Dieser arbeitet für mich, für ein Bild mit 600x800 pixels und 96dpi.

@ rishad2m8 Wenn die Größe unbekannt ist, kann die Größe zuerst mit https://msdn.Microsoft.com/en-us/library/system.drawing.image.size (v = vs. 110) .aspx Ich würde raten.

Versuchen Sie, keine Breite oder Höhe anzugeben. Verwenden Sie stattdessen Folgendes:

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

Zur Antwort von Paya hinzufügen: Um den Versuch von WPF zu kompensieren, sich an die Bildschirmauflösung anzupassen, sollten Sie in der Lage sein, Width und Height auf die ursprünglichen Abmessungen der Datei einzustellen und Stretch="Fill". Das hat bei mir funktioniert.

3

Wenn Sie das Bild in Originalgröße anzeigen möchten, aber die Bildgröße nicht kennen, ist es meiner Meinung nach am besten, das Bild als Hintergrund für UIElement festzulegen. So was:

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