Browse Source

add blur and avalonia surface visual ontop of blur.

tmp-winuicomp_with_manual_fbo
Dan Walmsley 6 years ago
parent
commit
e53dfc0d36
  1. 3
      samples/ControlCatalog/MainWindow.xaml
  2. 11
      src/Windows/Avalonia.Win32/Composition/CompositionHost.cs
  3. 1
      src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs
  4. 4
      src/Windows/Avalonia.Win32/WindowImpl.cs

3
samples/ControlCatalog/MainWindow.xaml

@ -7,7 +7,8 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:ControlCatalog.ViewModels" xmlns:vm="clr-namespace:ControlCatalog.ViewModels"
xmlns:v="clr-namespace:ControlCatalog.Views" xmlns:v="clr-namespace:ControlCatalog.Views"
x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}" Background="{DynamicResource SystemControlPageBackgroundAltHighBrush}"> TransparencyLevelHint="Transparent"
x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}" Background="{x:Null}">
<NativeMenu.Menu> <NativeMenu.Menu>
<NativeMenu> <NativeMenu>
<NativeMenuItem Header="File"> <NativeMenuItem Header="File">

11
src/Windows/Avalonia.Win32/Composition/CompositionHost.cs

@ -155,7 +155,7 @@ namespace Avalonia.Win32
var gDevice = interop.CreateGraphicsDevice(display.GetDirect3DDevice()); var gDevice = interop.CreateGraphicsDevice(display.GetDirect3DDevice());
var surface = gDevice.CreateDrawingSurface(new Windows.Foundation.Size(100, 100), var surface = gDevice.CreateDrawingSurface(new Windows.Foundation.Size(0, 0),
Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized, Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized,
Windows.Graphics.DirectX.DirectXAlphaMode.Premultiplied); Windows.Graphics.DirectX.DirectXAlphaMode.Premultiplied);
@ -167,10 +167,13 @@ namespace Avalonia.Win32
visual.RelativeSizeAdjustment = new System.Numerics.Vector2(1.0f, 1.0f); visual.RelativeSizeAdjustment = new System.Numerics.Vector2(1.0f, 1.0f);
visual.Brush = brush; visual.Brush = brush;
//_target.Root = visual;
_target.Root = visual; CreateBlur();
var visuals = _target.Root.As<ContainerVisual>().Children;
//CreateBlur(); visuals.InsertAtTop(visual);
return surfaceInterop; return surfaceInterop;
} }
@ -196,7 +199,7 @@ namespace Avalonia.Win32
void CreateCompositionRoot() void CreateCompositionRoot()
{ {
var root = _compositor.CreateContainerVisual(); var root = _compositor.CreateContainerVisual();
root.RelativeSizeAdjustment = new System.Numerics.Vector2(1.0f, 1.0f); root.RelativeSizeAdjustment = new System.Numerics.Vector2(1.0f, 1.0f);
//root.Offset = new System.Numerics.Vector3(0, 0, 0); //root.Offset = new System.Numerics.Vector3(0, 0, 0);
_target.Root = root; _target.Root = root;
} }

1
src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs

@ -465,6 +465,7 @@ namespace Avalonia.Win32.Interop
WS_VSCROLL = 0x200000, WS_VSCROLL = 0x200000,
WS_EX_DLGMODALFRAME = 0x00000001, WS_EX_DLGMODALFRAME = 0x00000001,
WS_EX_NOPARENTNOTIFY = 0x00000004, WS_EX_NOPARENTNOTIFY = 0x00000004,
WS_EX_NOREDIRECTIONBITMAP = 0x00200000,
WS_EX_TOPMOST = 0x00000008, WS_EX_TOPMOST = 0x00000008,
WS_EX_ACCEPTFILES = 0x00000010, WS_EX_ACCEPTFILES = 0x00000010,
WS_EX_TRANSPARENT = 0x00000020, WS_EX_TRANSPARENT = 0x00000020,

4
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -106,6 +106,10 @@ namespace Avalonia.Win32
{ {
cgl.AttachToCompositionTree(_hwnd); cgl.AttachToCompositionTree(_hwnd);
} }
else
{
CompositionHost.Instance.Initialize(_hwnd);
}
Screen = new ScreenImpl(); Screen = new ScreenImpl();

Loading…
Cancel
Save