2017-05-12 2 views
2

마이크로 소프트는 최근 새로운 "유창한"디자인 언어를 공개했으며, 그 일부는 "acrylic" material입니다. 이 효과는 요소를 투명하게 만들고 배경을 흐리게 만듭니다. 이 기능은 창에 적용 할 수 있습니다 (예 : 배경 아크릴) 또는 창의 개별 요소에 빛이 비춰 지므로 다른 컨트롤 (인앱 아크릴)이 빛나게됩니다. 이것은 개념적으로나 시각적으로 macOS에서의 생동감과 매우 유사합니다.win32 앱의 아크릴 소재

XAML의 특수 브러시로 구현되었지만 일반적인 Win32 응용 프로그램에서 배경 아크릴을 사용하는 방법이 있습니까? 이 효과는 시작 메뉴 및 작업 표시 줄 (SetWindowCompositionAttribute이 처리 함)에 적용된 흐림 효과와 비슷하게 보이므로 비슷한 플래그로 활성화 될 수 있습니다.

하위 쿼리 : 어떻게 구현되는지 궁금하십니까? 창에 설정할 수있는 DWM (예 : SetWindowCompositionAttribute 또는 Vista 및 Aero의 Aero Glass)에 적용 할 수있는 플래그입니까? 아니면 UWP가 DWM에 대한 일종의 제어를 가지고 있으며 렌더링 방법을 제어하도록 쉐이더를 설정할 수 있습니까? 비스타에서는 DWM이 처음 도입되었을 때 WPF와의 공통 코드가 있었고 실제로 (DirectX와 같은) 버퍼와 장면 그래프를 공유하기 때문에 가능한 트릭이 가능했습니다. 마법 부여 유틸리티는 magnify WPF apps sharply like vector images 일 수 있지만 그 기능은 나중에 없어졌습니다. MS가 그 페이지 (다른 레이어와 XAML 브러시로 구현 됨)에 "아크릴"을 표시하는 방식은 어떻게 든 DWM 장면 그래프에 레이어를 삽입해야한다고 생각하게 만듭니다. 그러면 레이어를 사용하기가 더 어렵거나 불가능 해집니다. Win32에서.

답변

2

효과는 UWP의 XAML 합성기를 사용하는 하위 수준의 XAML 합성 API를 사용하여 만들어 지므로 Win32에서이 기능을 기본적으로 구현할 수 있을지는 의문입니다. 정말로 원한다면 데스크탑 브릿지에서 앱을 가져 와서 UI를 변환하거나 현재 사용 가능한 기술로 효과를 모방 할 수 있습니다. (예 : Chrome과 같은 브라우저는 아크릴 크롬 효과를 얻을 수 있는지 잘 모르지만 Chrome 크롬을 앱에 추가 사용하도록 관리합니다.) https://github.com/bbougot/AcrylicWPF

당신의 가설이 좋은 것 같다

2

난 그냥 WPF에 아크릴을 가지고이 프로젝트를 발견했다. 그것은 SetWindowsCompositionAttribute를 사용하고 그것에 셰이더를 적용합니다.

+1

Windows 10 Fluent Design System의 실제 아크릴 효과는 아닙니다. Noise.fx라는 자체 셰이더 효과를 사용하고 자체 프로세스에서 실행됩니다. 흐림 효과는'SetWindowsCompositionAttribute'이지만 권장되지 않습니다. Fluent Design System의 아크릴 브러시를 시뮬레이션하는 것입니다. – walterlv