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 |
