wpf自动调整图像大小

时间:2014-12-10 13:46:34

标签: c# wpf image xaml code-behind

我已经敲了几天试图弄清楚为什么我的控件不想调整大小。

例如下面,我在一个可调整大小的窗口中将background.png作为窗口背景。窗口成功重新调整大小,背景根据需要填充整个窗口。但图像不会!两个图像都是.png,它们都是相同的dpi,并且都具有相同的分辨率。

ActuatorUC中的图像应该直接与背景对齐,因为它具有透明部分。

MainWindow.xaml - >

<Window.Background>
    <ImageBrush ImageSource="Resources/background.png"></ImageBrush>
</Window.Background>

<Grid Name="mainGrid">
    <tc:ActuatorUC x:Name="act1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
</Grid>

ActuatorUC.xaml - &gt;

<Canvas Name="canvas" >
</Canvas>

ActuatorUC.xaml.cs - &gt;

private void LoadImage(string imageName )
{

this.canvas.Children.Clear();

Image image = new Image();

string newImageName = "pack://application:,,,/Resources/" + imageName + ".png";

image.Source = (new ImageSourceConverter()).ConvertFromString(newImageName) as ImageSource;
image.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
image.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;

this.canvas.Children.Add(image);

}

动态添加的图片有效,它显示但不会使用父画布调整大小。

我已经完成了大量的搜索,但我无法弄清楚这一点。我很确定这是关于wpf的简单或一些误解。不幸的是,这些图片是专有的,所以我无法将它们添加到这个帖子中。

提前致谢。

1 个答案:

答案 0 :(得分:0)

感谢Clemens的评论,我修正了下面的答案。

Window.Xaml - &gt;

<Window.Background>
    <ImageBrush ImageSource="Resources/background.png"></ImageBrush>
</Window.Background>

<Grid Name="mainGrid">
    <tc:ActuatorUC x:Name="act1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
</Grid>

ActuatorUC.Xaml - &gt;

<Grid Name="grid" >

</Grid>

ActuatorUc.Xaml.cs - &gt;

private void LoadImage(string imageName )
{

this.canvas.Children.Clear();

Image image = new Image();

string newImageName = "pack://application:,,,/Resources/" + imageName + ".png";

image.Stretch = Stretch.Fill;
image.Source = (new ImageSourceConverter()).ConvertFromString(newImageName) as ImageSource;

this.canvas.Children.Add(image);

}