다음을 통해 공유


비트맵 효과 개요

디자이너와 개발자들은 비트맵 효과를 사용하여 렌더링된 WPF(Windows Presentation Foundation) 콘텐츠에 시각 효과를 적용할 수 있습니다. 예를 들어 비트맵 효과를 사용하여 DropShadowBitmapEffect 효과나 흐리게 효과를 이미지 또는 단추에 쉽게 적용할 수 있습니다.

중요

.NET Framework 4 이상에서 BitmapEffect 클래스는 사용되지 않습니다. BitmapEffect 클래스를 사용하려고 하면 사용되지 않는 예외가 발생합니다. BitmapEffect 클래스에 대한 사용되는 대안은 Effect 클래스입니다. 대부분의 경우에서 Effect 클래스가 훨씬 빠릅니다.

WPF 비트맵 효과

비트맵 효과(BitmapEffect 개체)는 간단한 픽셀 처리 작업입니다. 비트맵 효과는 BitmapSource를 입력으로 사용하고 효과를 적용한 후 흐리게 또는 그림자와 같은 새 BitmapSource를 생성합니다. 각 비트맵 효과는 BlurBitmapEffectRadius와 같이 필터링 속성을 제어할 수 있는 속성을 노출합니다.

특별한 경우 WPF에서는 Button 또는 TextBox와 같이 활성 Visual 개체에 대한 속성으로 효과를 설정할 수 있습니다. 런타임에 픽셀 처리가 적용되고 렌더링됩니다. 이 경우 렌더링 시 Visual이 자동으로 BitmapSource와 동등하게 변환되고 BitmapEffect에 입력으로 공급됩니다. 출력은 Visual 개체의 기본 렌더링 동작을 대체합니다. 그렇기 때문에 BitmapEffect 개체가 소프트웨어에서만 강제로 시각적 개체가 렌더링되도록 하는 것입니다. 즉, 효과가 적용될 때 시각적 개체에 대한 하드웨어 가속이 없습니다.

참고

WPF 비트맵 효과는 소프트웨어 모드에서 렌더링됩니다. 효과를 적용하는 모든 개체도 소프트웨어에서 렌더링됩니다. 큰 시각적 개체에 비트맵 효과를 사용하거나 비트맵 효과의 속성에 애니메이션 효과를 줄 때 성능이 가장 크게 저하됩니다. 따라서 여러분도 이러한 방식으로 비트맵 효과를 사용하지 않아야 하는 것은 물론, 다른 사용자들도 바람직한 경험을 얻을 수 있도록 철저히 테스트하고 주의해야 합니다.

참고

WPF 비트맵 효과는 부분 신뢰 실행을 지원하지 않습니다. 비트맵 효과를 사용하려면 애플리케이션에 완전 신뢰 권한이 있어야 합니다.

효과를 적용하는 방법

BitmapEffectVisual의 속성입니다. 따라서 Button, Image, DrawingVisual 또는 UIElement와 같이 효과를 시각적 개체에 적용하는 것은 속성을 설정하는 것만큼 쉽습니다. BitmapEffect를 단일 BitmapEffect 개체로 설정하거나 BitmapEffectGroup 개체를 사용하여 여러 효과를 연결할 수 있습니다.

다음 예제에서는 XAML(Extensible Application Markup Language)에서 BitmapEffect를 적용하는 방법을 보여 줍니다.

<Button  Width="200">You Can't Read This!
  <Button.BitmapEffect>

  <!-- <BitmapEffectGroup> would go here if you wanted to apply more 
         then one effect to the Button. However, in this example only  
         one effect is being applied so BitmapEffectGroup does not need  
         to be included. -->

    <!-- The larger the Radius, the more blurring. The default range is 20.
         In addition, the KernelType is set to a box kernel. A box kernel
         creates less disruption (less blur) then the default Gaussian kernel. -->
    <BlurBitmapEffect Radius="10" KernelType="Box" />

  </Button.BitmapEffect>
</Button>

다음 예제에서는 코드에서 BitmapEffect를 적용하는 방법을 보여 줍니다.

// Get a reference to the Button.
Button myButton = (Button)sender;

// Initialize a new BlurBitmapEffect that will be applied
// to the Button.
BlurBitmapEffect myBlurEffect = new BlurBitmapEffect();

// Set the Radius property of the blur. This determines how
// blurry the effect will be. The larger the radius, the more
// blurring.
myBlurEffect.Radius = 10;

// Set the KernelType property of the blur. A KernalType of "Box"
// creates less blur than the Gaussian kernal type.
myBlurEffect.KernelType = KernelType.Box;

// Apply the bitmap effect to the Button.
myButton.BitmapEffect = myBlurEffect;

참고

BitmapEffect가 레이아웃 컨테이너(예: DockPanel 또는 Canvas)에 적용되는 경우 모든 자식 요소를 포함하여 요소 또는 시각적 개체의 시각적 트리에 효과가 적용됩니다.

사용자 지정 효과 만들기

WPF에서는 또한 관리되는 WPF 애플리케이션에서 사용할 수 있는 사용자 지정 효과를 만들기 위한 관리되지 않는 인터페이스를 제공합니다. 사용자 지정 비트맵 효과를 만들기 위한 추가 참조 자료에 대해서는 관리되지 않는 WPF 비트맵 효과 설명서를 참조하세요.

참고 항목