我有一个 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);
}
}
}
答案 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