Application/C# (WPF)

[C# WPF] 이미지 화질 개선 (Bitmap 화질 높이기)

devsalix 2023. 1. 16. 17:11
728x90

C# WPF 를 사용하다 보면

 

크기 조정 등으로 이미지가 깨지거나 일그러질 경우

 

자체적으로 보완하는 함수가 존재합니다

 

해당 함수는

 

System.Windows.Media.RenderOption.SetBitmapScalingMode 함수로

 

해당 함수 사용 시 옵션에 따라 개선된 이미지를 제공받을 수 있습니다

 

사용법은

 

System.Windows.Media.RenderOption.SetBitmapScalingMode(this, BitmapScalingMode);

 

위의 방식으로 2번째 인자값에는

 

public enum BitmapScalingMode
{
    // 요약:
    //     System.Windows.Media.BitmapScalingMode.Linear인 기본 비트맵 배율 조정을 사용합니다.
    Unspecified = 0,
    //
    // 요약:
    //     System.Windows.Media.BitmapScalingMode.HighQuality 모드보다 빠르지만 출력 품질이 낮은 선형
    //     비트맵 배율 조정을 사용합니다.
    Linear = 1,
    //
    // 요약:
    //     System.Windows.Media.BitmapScalingMode.HighQuality 모드보다 빠르지만 출력 품질이 낮은 선형
    //     비트맵 배율 조정을 사용합니다.System.Windows.Media.BitmapScalingMode.LowQuality 모드는 System.Windows.Media.BitmapScalingMode.Linear
    //     모드와 같습니다.
    LowQuality = 1,
    //
    // 요약:
    //     System.Windows.Media.BitmapScalingMode.LowQuality 모드보다 느리지만 출력 품질이 좋은 고품질
    //     비트맵 배율 조정을 사용합니다.System.Windows.Media.BitmapScalingMode.HighQuality 모드는 System.Windows.Media.BitmapScalingMode.Fant
    //     모드와 같습니다.
    HighQuality = 2,
    //
    // 요약:
    //     다른 모든 비트맵 배율 조정 모드보다 느리지만 출력 품질이 매우 좋은 고품질 Fant 비트맵 배율 조정을 사용합니다.
    Fant = 2,
    //
    // 요약:
    //     소프트웨어 래스터라이저가 사용되는 System.Windows.Media.BitmapScalingMode.LowQuality 모드에
    //     비해 성능이 뛰어난 최근접 비트맵 배율 조정을 사용합니다.이 모드는 주로 비트맵을 확대하는 데 사용됩니다.
    NearestNeighbor = 3,
}

 

위의 값을 사용할 수 있으며

 

제일 아래 NearestNeighbor 값을 쓸 경우 매우 개선된 화질의 Bitmap 이미지를 제공받습니다

 

하지만 단점으로는 출력이 느려진다는 단점이 존재하지만

 

요즘 같은 고 성능 PC 환경의 경우에는 무리가 없을 것이라 판단되네요

 

적용방법으로는

 

public MainWindow()
{
    InitializeComponent();

    RenderOptions.SetBitmapScalingMode(this, BitmapScalingMode.NearestNeighbor);
}

 

위와 같이 적용하면 됩니다

 


 제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90