如何在XAML中获取图像以显示其实际大小?

时间:2009-12-03 17:25:38

标签: c# wpf xaml image

我有一个 27 x 27 像素图像,我在WPF中显示,但它显示大于 窗口。< / p>

如何让它显示其实际尺寸?

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);
        }
    }
}

4 个答案:

答案 0 :(得分:20)

img.Stretch = Stretch.None

默认情况下,Stretch property的值为Uniform,会调整图片大小以填充所有可用空间。

答案 1 :(得分:6)

这些提示都不适合我。一些约束技巧让我走了。

{{1}}

您可以将Strech设置为None,但这对我的应用程序使用.net 4.5.1。

答案 2 :(得分:2)

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

StackPanel将拉伸以填充/溢出它所在的任何容器,除非指定了它的大小。由于您没有在任何设置上设置边距或对齐,因此所有内容的默认行为都是Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch",或者只需将“拉伸填充”。对齐/定位元素将解决此问题。

编辑:添加了img.Stretch = Stretch.None;,我还构建了一个示例应用并对其进行了测试...它的工作原理。

答案 3 :(得分:0)

它也可能是元数据中图像的DPI属性。它应该是96。 https://stackoverflow.com/a/4965404/659326