トルネード

毛利のメモ書き

UWP 入門 - VC++ ウィンドウ半透明

Visual Studio 2017 UWP ウィンドウ半透明表示 C++

Rectangleを半透明にしてウィンドウ壁紙を半透明表示させます。

<Rectangle Fill="Transparent" Name="Rectangle1" Loaded="Rectangle1_Loaded"></Rectangle>
using namespace Windows::UI::Composition;
public ref class MainPage sealed
{
    Compositor^ _Compositor;
    SpriteVisual^ _SpriteVisual;
public:
    MainPage();

private:
    void Rectangle1_Loaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
};
#include <WindowsNumerics.h>

MainPage::MainPage()
{
    InitializeComponent();
    _Compositor = Windows::UI::Xaml::Hosting::ElementCompositionPreview::GetElementVisual(this)->Compositor;
    _SpriteVisual = _Compositor->CreateSpriteVisual();
}


void cpp_uwp::MainPage::Rectangle1_Loaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    _SpriteVisual->Size = Windows::Foundation::Numerics::float2{ (float)Rectangle1->ActualWidth,(float)Rectangle1->ActualHeight };
    Windows::UI::Xaml::Hosting::ElementCompositionPreview::SetElementChildVisual(Rectangle1, _SpriteVisual);
    _SpriteVisual->Brush = _Compositor->CreateHostBackdropBrush();
}

Windows::Foundation::Numerics::float2()を利用するためにWindowsNumerics.hをインクルードする。 f:id:mojeld:20180810173423g:plain

参考

C# UWPウィンドウ半透明