Window/WPF2010. 2. 8. 15:55

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;

 }

 

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

        

         

          

'Window > WPF' 카테고리의 다른 글

[ WPF ] Canvas Image Background  (0) 2010.02.11
[ WPF ] TextBox Select All Text  (0) 2010.02.11
[WPF] Object Capture  (0) 2010.01.29
[WPF] 시계 만들기  (0) 2010.01.26
[WPF] Image Pixel  (0) 2010.01.24
Posted by 열ㅇl