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:vm="clr-namespace:ControlCatalog.ViewModels"
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>
<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 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.DirectXAlphaMode.Premultiplied);
@ -167,10 +167,13 @@ namespace Avalonia.Win32
visual.RelativeSizeAdjustment = new System.Numerics.Vector2(1.0f, 1.0f);
visual.Brush = brush;
//_target.Root = visual;
_target.Root = visual;
CreateBlur();
var visuals = _target.Root.As<ContainerVisual>().Children;
//CreateBlur();
visuals.InsertAtTop(visual);
return surfaceInterop;
}
@ -196,7 +199,7 @@ namespace Avalonia.Win32
void CreateCompositionRoot()
{
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);
_target.Root = root;
}

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

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

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

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

Loading…
Cancel
Save