티스토리 뷰
WPF vs WinForms 비교
1. 기본 개념
| 항목 | WinForms | WPF |
|---|---|---|
| 출시 | 2002 (.NET 1.0) | 2006 (.NET 3.0) |
| 렌더링 | GDI/GDI+ (CPU) | DirectX (GPU) |
| UI 정의 | C# 코드 (Designer) | XAML + C# |
| 아키텍처 | 이벤트 기반 | MVVM 패턴 지원 |
2. 렌더링 방식
WinForms:
┌─────────────┐
│ Control │ → GDI/GDI+ → CPU → 화면
└─────────────┘
(픽셀 기반)
WPF:
┌─────────────┐
│ Visual │ → DirectX → GPU → 화면
└─────────────┘
(벡터 기반)- WinForms: CPU 기반 렌더링, 픽셀 단위
- WPF: GPU 가속, 벡터 기반으로 해상도 독립적
3. UI 정의 방식
WinForms - 코드 중심
Button btn = new Button();
btn.Text = "클릭";
btn.Location = new Point(10, 10);
btn.Click += Btn_Click;
this.Controls.Add(btn);
WPF - XAML 선언적 방식
<Button Content="클릭"
Margin="10"
Command="{Binding ClickCommand}"/>
4. 데이터 바인딩
| 항목 | WinForms | WPF |
|---|---|---|
| 바인딩 | 단순 (DataSource) | 강력 (INotifyPropertyChanged) |
| 방향 | 단방향 위주 | 양방향, 단방향 선택 |
| 변환기 | 없음 | IValueConverter |
| 템플릿 | 없음 | DataTemplate, ControlTemplate |
WinForms 바인딩
textBox1.DataBindings.Add("Text", person, "Name");
WPF 바인딩
<TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
5. 레이아웃 시스템
WinForms - 절대/앵커 위치
button.Location = new Point(100, 50); // 절대 좌표
button.Anchor = AnchorStyles.Top | AnchorStyles.Right;
WPF - 유연한 레이아웃 패널
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Content="상단"/>
<ListBox Grid.Row="1"/>
</Grid>
레이아웃 패널 대응표
| WinForms | WPF |
|---|---|
| FlowLayoutPanel | StackPanel, WrapPanel |
| TableLayoutPanel | Grid, UniformGrid |
| 절대좌표 | Canvas |
| - | DockPanel |
6. 스타일링/테마
WinForms - 제한적
button.BackColor = Color.Blue;
button.FlatStyle = FlatStyle.Flat;
// 컨트롤별 개별 설정 필요
WPF - 강력한 스타일/템플릿
<Style TargetType="Button">
<Setter Property="Background" Value="Blue"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<!-- 완전히 새로운 모양 정의 가능 -->
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
7. 장단점 비교
WinForms
| 장점 | 단점 |
|---|---|
| 쉬운 학습곡선 | 구식 외관 |
| 빠른 개발 | 제한적 커스터마이징 |
| 가벼움 | 해상도 의존적 |
| 풍부한 레거시 자료 | 제한적 데이터바인딩 |
WPF
| 장점 | 단점 |
|---|---|
| 현대적 UI | 높은 학습곡선 |
| 강력한 데이터바인딩 | 상대적으로 무거움 |
| MVVM 패턴 지원 | 복잡한 디버깅 |
| 해상도 독립적 | 초기 개발 시간 |
| 애니메이션/3D 지원 |
8. 선택 가이드
WinForms 선택 시
- 간단한 내부 도구
- 빠른 프로토타이핑
- 레거시 시스템 유지보수
- 팀이 WinForms에 익숙
WPF 선택 시
- 현대적 UI 필요
- 복잡한 데이터 바인딩
- 커스텀 컨트롤 다수
- MVVM 아키텍처 적용
- 고해상도/다양한 DPI 지원
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Sh
- 싱가폴
- 도커티슈케이스
- 도커각티슈박스
- 도커티슈박스
- shellscript
- docker container tissue
- vim
- docker container
- 이직
- 도커컨테이너
- 도커각티슈케이스
- docker container case
- 개발자
- docker container tissue box
- 2017 티스토리 결산
- Linux
- docker container whale
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
