출처 : http://shine10e.tistory.com/7



Window 창의 크기를 변경 시

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

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

 

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

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

 

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




using RawInput_dll;

using System;

using System.Collections.Generic;

using System.Diagnostics;

using System.IO;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

 

namespace PlayMartWpf

{

    /// <summary>

    /// MainWindow.xaml 대한 상호 작용 논리

    /// </summary>

    public partial class MainWindow : Window

    {

 

        ScaleTransform scale = new ScaleTransform();

        double orginalWidth, originalHeight;

 

 

        public MainWindow()

        {

            InitializeComponent();

        }

 

        private void Window_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(Window_SizeChanged);

        }

 

 

        private void Window_SizeChanged(object sender, SizeChangedEventArgs e)

        {

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

        }

 

        private void ChangeSize(double width, double height)

        {

            scale.ScaleX = width / orginalWidth;

            scale.ScaleY = height / originalHeight;

 

            FrameworkElement rootElement = this.Content as FrameworkElement;

 

            rootElement.LayoutTransform = scale;

        }

    }

}

 



























Posted by motolies
,