728x90
반응형
728x170
■ 기본적으로 WPF는 DrawingBrush 및 VisualBrush와 같은 TileBrush 개체의 렌더링된 콘텐츠를 캐시하지 않는다. 장면에서 TileBrush의 내용이나 사용이 변경되지 않는 정적 시나리오에서는 비디오 메모리를 절약하므로 의미가 있다. 정적 컨텐츠가 있는 TileBrush가 비정적 방식으로 사용되는 경우(예 : 정적 DrawingBrush 또는 VisualBrush가 회전하는 3D 개체의 표면에 매핑되는 경우)는 의미가 없다. WPF의 기본 동작은 콘텐츠가 변경되지 않더라도 모든 프레임에 대해 DrawingBrush 또는 VisualBrush의 전체 컨텐츠를 다시 렌더링하는 것이다.
RenderOptions 개체의 CachingHint 속성을 Cache로 설정하면 캐시된 버전의 바둑판식 브러시 개체를 사용하여 성능을 향상시킬 수 있다.
CacheInvalidationThresholdMinimum 및 CacheInvalidationThresholdMaximum 속성 값은 배율 변경으로 인해 TileBrush 개체를 다시 생성해야 하는 시기를 결정하는 상대 크기 값이다. 예를 들어 CacheInvalidationThresholdMaximum 속성을 2.0으로 설정하면 TileBrush의 캐시 크기가 현재 캐시 크기의 두 배를 초과하는 경우에만 다시 생성하면 된다.
▶ 예제 코드 (C#)
using System.Windows.Media;
DrawingBrush drawingBrush = new DrawingBrush();
// 브러시에 대한 캐싱 힌트 옵션을 설정한다.
RenderOptions.SetCachingHint(drawingBrush, CachingHint.Cache);
// 타일 브러시 재생성을 위한 최소 및 최대 상대 크기를 설정한다.
// 타일 브러시는 크기가 현재 캐시된 크기의 0.5x 또는 2x일 때 재생성되고 다시 캐시된다.
RenderOptions.SetCacheInvalidationThresholdMinimum(drawingBrush, 0.5);
RenderOptions.SetCacheInvalidationThresholdMaximum(drawingBrush, 2.0);
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] Frame 클래스 : Navigated 이벤트를 사용해 스크립트 오류 억제하기 (0) | 2023.01.08 |
---|---|
[C#/WPF] Dispatcher 클래스 : Run 정적 메소드를 사용해 다중 윈도우 다중 스레드 사용하기 (0) | 2023.01.08 |
[C#/WPF] 백그라운드 스레드로 차단 작업 처리하기 (0) | 2023.01.08 |
[C#/WPF] DispatcherObject 클래스 : Dispatcher 속성을 사용해 장기 실행 계산이 포함된 단일 스레드 애플리케이션 만들기 (0) | 2023.01.07 |
[C#/WPF] ObjectCache 클래스 : 응용 프로그램 데이터 캐싱하기 (0) | 2023.01.06 |
[C#/WPF] HwndHost 클래스 : Win32 컨트롤 호스트하기 (0) | 2023.01.04 |
[C#/WPF] WindowsFormsHost 클래스 : PropertyMap 속성을 사용해 WinForm 컨트롤 속성 매핑 설정하기 (0) | 2023.01.02 |
[C#/WPF] WindowsFormsHost 엘리먼트 : 하이브리드 애플리케이션에서 데이터 바인딩하기 (0) | 2022.12.31 |
[C#/WPF] WindowsFormsHost 엘리먼트 : WinForm 레이아웃 컨트롤 사용하기 (0) | 2022.12.29 |
[C#/WPF] WindowsFormsHost 엘리먼트 : Margin/Padding 속성 사용하기 (0) | 2022.12.29 |
댓글을 달아 주세요