나는 내 컨트롤의 크기를 조정하고 싶지 않은 이유를 알아 내려고 며칠 동안 내 머리를 쾅쾅 대고있었습니다.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에 대해 가지고있는 단순하거나 오해라고 확신한다. 불행히도 이미지는 독점적이므로이 게시물에 추가 할 수 없습니다.
미리 감사드립니다.
을 캔버스는 결코 그 아이의 크기를 조정하지 않고 단순히 무시 HorizontalAlignment 또는 VerticalAlignment. 대신 그리드를 사용하십시오. ImageBrush는 Stretch 속성을 Fill으로 설정해야합니다 (기본값 임). – Clemens
감사합니다 Clemens는 효과가있었습니다! 나는 대답으로 만들 것이다. – bassplayer142