2014-12-10 4 views
0

나는 내 컨트롤의 크기를 조정하고 싶지 않은 이유를 알아 내려고 며칠 동안 내 머리를 쾅쾅 대고있었습니다.wpf 이미지 크기가 자동으로 조정됩니다.

예를 들어 아래에서 볼 수 있듯이 크기 조정 가능 창에서 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 ->

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

는 ActuatorUC.xaml.cs ->은

동적으로 추가 된 사진 작품
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에 대해 가지고있는 단순하거나 오해라고 확신한다. 불행히도 이미지는 독점적이므로이 게시물에 추가 할 수 없습니다.

미리 감사드립니다.

+3

을 캔버스는 결코 그 아이의 크기를 조정하지 않고 단순히 무시 HorizontalAlignment 또는 VerticalAlignment. 대신 그리드를 사용하십시오. ImageBrush는 Stretch 속성을 Fill으로 설정해야합니다 (기본값 임). – Clemens

+0

감사합니다 Clemens는 효과가있었습니다! 나는 대답으로 만들 것이다. – bassplayer142

답변

0

클레멘스 (Clemens)의 의견 덕분에 아래에 답이 나와 있습니다.

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

<Grid Name="grid" > 

</Grid> 

ActuatorUc.Xaml.cs ->

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

} 
관련 문제