티스토리 뷰

카테고리 없음

Wpf와 Winform의 차이

KyeongRok Kim 2025. 11. 30. 16:33

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
링크
«   2026/01   »
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
글 보관함