2017-12-15 12 views
0

UWP 앱 (대상인 경우 16299)은 전체 화면이며 앱 배경에 CompositionBackdropBrush를 사용합니다. 이로 인해 CompositionBackdropBrush가 작동하지 않습니다 (단지 흰색으로 나타남). 이 일을 할 수있는 방법이 있습니까?CompositionBackdropBrush with Full Screen 앱

앱이 전체 화면이 아니어도 작동합니다.

별도의 메모에서 앱이 일시 중지 될 때마다 CompositionBackdropBrush가 흰색으로 바뀌는 것으로 나타났습니다. 그것은 일종의 보안 기능입니까? 여기

는 App.xaml.cs를에서 전체 화면을 사용하는 코드입니다 :

var view = ApplicationView.GetForCurrentView(); 
view.TryEnterFullScreenMode(); 
view.FullScreenSystemOverlayMode = FullScreenSystemOverlayMode.Minimal; 
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.FullScreen; 

그리고 여기 조성을 브러시를 적용하기위한 코드입니다 (BackgroundGrid 단지 전체 크기의 그리드입니다) : 생성자 :

_compositor = ElementCompositionPreview.GetElementVisual(this).Compositor; 

은 OnLoaded :

_hostSprite = _compositor.CreateSpriteVisual(); 
_hostSprite.Size = new Vector2((float)BackgroundGrid.ActualWidth, (float)BackgroundGrid.ActualHeight); 

ElementCompositionPreview.SetElementChildVisual(BackgroundGrid, _hostSprite); 

_hostSprite.Brush = _compositor.CreateHostBackdropBrush(); 

답변

2

이유는이 particul을 ar 코드가 예상대로 렌더링되지 않습니다. HostBackdrop에 GaussianBlurEffect가 내장되어 있습니다. 동적 인 블러 링으로 인해 성능 문제가 발생하기 때문에 전체 화면 모드, 활성 창 또는 저전력 모드 (등)와 같은 특정 "폴백 (fall back)"또한 브러시에 내장되어 투명 흐리게 표시된 창에 반대되는 단색을 만듭니다 . 크로스 페이드 애니메이션을 만들어 이러한 투명성에서 고체성 전환을 처리 할 수 ​​있으므로 덜 거슬 릴 것입니다.

HostBackdropBrush의 샘플은 here입니다.

BackdropBrush는 HostBackdropBrush와 비슷하지만 응용 프로그램 자체에 그려진 내용 만 샘플링하기 때문에 많은 제한이 없습니다. 이러한 효과를 사용하여 많은 사용자 지정 작업을 수행하지 않으려는 경우 XAML은 acrylic을 지원하며 사용하기 쉽고 개발자를위한 대체 전환을 위해 애니메이션과 같은 작업을 처리합니다.