WPF에서 QR 코드 스캐너를 빌드하는 방법
Windows Presentation Foundation (WPF)은 XAML로 정의된 사용자 인터페이스를 가진 Windows 데스크톱 애플리케이션을 빌드하기 위한 .NET Framework입니다. IronQR은 WPF에 직접 통합되어 몇 줄의 C# 코드만을 사용하여 사용자 선택 이미지 파일에서 QR 코드 스캔을 가능하게 합니다.
이 가이드에서는 파일 대화상자를 열고, 선택된 이미지를 로드하며, IronQR을 사용하여 삽입된 QR 코드를 디코딩하는 WPF 애플리케이션을 빌드합니다. 이 abordagem은 PNG, JPEG, BMP, GIF, TIFF 및 다른 일반 이미지 형식을 지원합니다.
WPF에서 QR 코드 스캔하는 방법
- IronQR C# 라이브러리를 NuGet을 통해 설치합니다
- WPF 창 𝕏AML에 `Button`과 `TextBlock`을 추가합니다
- 디스크에서 이미지를 선택하기 위해 `OpenFileDialog`을 사용해 파일 대화상자를 엽니다
- `AnyBitmap.FromFile`을 사용해 이미지를 로드하고 `QrImageInput`으로 감쌉니다
- `Read`를 호출하고 디코딩된 값을 `TextBlock`에 표시합니다
필수 조건
- .NET 데스크톱 개발 워크로드가 설치된 Visual Studio 2022
- .NET 8 이상을 대상으로 하는 WPF 프로젝트
IronQR 설치
Visual Studio의 NuGet 패키지 관리 콘솔을 사용하여 IronQR 라이브러리를 설치하세요. 도구 > NuGet 패키지 관리자 > 패키지 관리 콘솔로 이동하여 다음을 실행합니다:
Install-Package IronQR
또는, NuGet에서 IronQR을(를) 검색하여 최신 버전을 설치하세요.
WPF 창 레이아웃
스캐너 UI는 파일 대화 상자를 트리거하기 위해 Button을 사용하고, 디코딩된 결과를 표시하기 위해 TextBlock을 사용합니다. MainWindow.xaml에 다음 마크업을 추가하세요:
<StackPanel Margin="28" VerticalAlignment="Center">
<TextBlock Text="WPF QR Code Scanner" FontSize="20" FontWeight="Bold" Margin="0,0,0,16"/>
<Button x:Name="ScanButton"
Content="Select Image and Scan QR Code"
Click="OnScanButtonClicked"
Padding="12,8"
Margin="0,0,0,16"
HorizontalAlignment="Left"/>
<TextBlock x:Name="ResultLabel"
Text="Select an image to scan."
TextWrapping="Wrap"
FontSize="14"/>
</StackPanel>
<StackPanel Margin="28" VerticalAlignment="Center">
<TextBlock Text="WPF QR Code Scanner" FontSize="20" FontWeight="Bold" Margin="0,0,0,16"/>
<Button x:Name="ScanButton"
Content="Select Image and Scan QR Code"
Click="OnScanButtonClicked"
Padding="12,8"
Margin="0,0,0,16"
HorizontalAlignment="Left"/>
<TextBlock x:Name="ResultLabel"
Text="Select an image to scan."
TextWrapping="Wrap"
FontSize="14"/>
</StackPanel>
샘플 입력
아래 QR 코드를 테스트 이미지로 사용하세요. 기기 저장 후 파일 대화 상자를 통해 선택하고 이미지를 선택하고 QR 코드 스캔을 클릭합니다. 디코딩된 값은 https://ironsoftware.com으로 표시되어야 합니다.
표본 QR 코드 — `https://ironsoftware.com`을 인코딩
IronQR로 QR 코드 스캔
버튼이 클릭되면 OnScanButtonClicked이 파일 대화 상자를 열어 이미지를 선택하게 됩니다. 선택된 파일은 AnyBitmap에 로드되어 QrReader.Read에 전달되고, 첫 번째 디코딩 값이 ResultLabel에 작성됩니다.
MainWindow.xaml.cs에 다음 OnScanButtonClicked 메서드를 추가하세요:
:path=/static-assets/qr/content-code-examples/get-started/wpf-qr-code-scanner.cs
using IronQr;
using IronSoftware.Drawing;
using Microsoft.Win32;
using System.Windows;
private void OnScanButtonClicked(object sender, RoutedEventArgs e)
{
// Open a file dialog to select a QR code image
var dialog = new OpenFileDialog
{
Title = "Select a QR code image",
Filter = "Image Files|*.png;*.jpg;*.jpeg;*.bmp;*.gif;*.tiff"
};
if (dialog.ShowDialog() != true) return;
var imageSource = dialog.FileName;
// Load the image into IronQR
var inputBmp = AnyBitmap.FromFile(imageSource);
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display the first result
var firstResult = results.FirstOrDefault();
ResultLabel.Text = firstResult != null
? "Scanned Text: " + firstResult.Value
: "No QR code found in the selected image.";
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.Win32
Imports System.Windows
Private Sub OnScanButtonClicked(sender As Object, e As RoutedEventArgs)
' Open a file dialog to select a QR code image
Dim dialog As New OpenFileDialog With {
.Title = "Select a QR code image",
.Filter = "Image Files|*.png;*.jpg;*.jpeg;*.bmp;*.gif;*.tiff"
}
If dialog.ShowDialog() <> True Then Return
Dim imageSource As String = dialog.FileName
' Load the image into IronQR
Dim inputBmp As AnyBitmap = AnyBitmap.FromFile(imageSource)
' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(inputBmp)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Display the first result
Dim firstResult As QrResult = results.FirstOrDefault()
ResultLabel.Text = If(firstResult IsNot Nothing, "Scanned Text: " & firstResult.Value, "No QR code found in the selected image.")
End Sub
OpenFileDialog은 일반 이미지 포맷으로 필터링된 네이티브 Windows 파일 선택을 제공합니다. AnyBitmap.FromFile은 PNG, JPEG, BMP, GIF, 그리고 TIFF 입력에 대한 포맷 디코딩을 처리하며, QrReader.Read은 감지된 QR 코드 당 하나의 항목을 포함하는 IEnumerable<QrResult>을 반환합니다. FirstOrDefault은 유효한 코드가 없는 이미지에서 예외를 피하면서 QR 코드가 발견되지 않았을 때 null을 안전하게 반환합니다.
출력
QR 코드 이미지를 선택하고 스캔 버튼을 클릭한 후, 디코딩된 값이 버튼 아래의 TextBlock에 나타납니다.
WPF 창에서 렌더링된 QR 코드 값 디코딩
프로젝트 다운로드
결론
IronQR은 최소한의 설정으로 WPF 애플리케이션에 통합됩니다 — 단일 QrReader.Read 호출로 데스크톱에서 전체 디코딩 파이프라인을 처리합니다. 하나의 이미지에서 여러 QR 코드를 스캔하려면, FirstOrDefault을 호출하는 대신 전체 결과 집합을 반복하세요.
이 동일한 패턴은 이미지 파일 디렉터리를 통해 반복하거나 WPF 미디어 요소로 웹캠 피드에서 프레임을 캡처하여 실시간 스캔을 통해 일괄 처리로 확장됩니다.
QR 코드 읽기 및 사용 가능한 스캔 모드에 대한 자세한 내용은 이미지에서 QR 코드 읽기 및 스캔 모드로 QR 코드 읽기 가이드를 참조하세요.

