내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-07-10 01:50

제목

[WPF] Window 사이즈 변경 시 컨트롤 크기 변경하기


Window 창의 크기를 변경 시

배치 된 컨트롤들의 크기도 함께 변경 할 경우가 있습니다.

Window의 SizeChanged 이벤트에서 다음과 같은 간단한 로직을 작성하면 됩니다.

 

Window 창의 처음 사이즈와 변경된 사이즈 만큼의 차이만큼

LayoutTransform의 ScaleTransform 값을 변경 시키면 됩니다.

 

예제 소스는 다음과 같습니다.

 double orginalWidth, originalHeight;

 ScaleTransform scale = new ScaleTransform();

 

 public Window1()

 {

    InitializeComponent();

    this.Loaded += new RoutedEventHandler(Window1_Loaded);

 }

 

 void Window1_SizeChanged(object sender, SizeChangedEventArgs e)

 {

    ChangeSize(e.NewSize.Width, e.NewSize.Height);

 }

 

 void Window1_Loaded(object sender, RoutedEventArgs e)

 {

    orginalWidth = this.Width;

    originalHeight = this.Height;

 

    if (this.WindowState == WindowState.Maximized)

    {

        ChangeSize(this.ActualWidth, this.ActualHeight);

    }

 

    this.SizeChanged += new SizeChangedEventHandler(Window1_SizeChanged);

 }

 

 private void ChangeSize(double width, double height)

 {

    scale.ScaleX = width / orginalWidth;

    scale.ScaleY = height / originalHeight;

 

    FrameworkElement rootElement = this.Content as FrameworkElement;

 

    rootElement.LayoutTransform = scale;


 

결과화면은 다음과 같습니다.

         

출처1

출처2