zoukankan      html  css  js  c++  java
  • Win2D 投影效果 ShadowEffect

    <Page
        x:Class="Win2DDemo.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:Win2DDemo"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:canvas="using:Microsoft.Graphics.Canvas.UI.Xaml"
                       
        mc:Ignorable="d"
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
        Unloaded="Page_Unloaded"
        
        >
    
        <Grid x:Name="root">
            <canvas:CanvasControl x:Name="canvasControl"  CreateResources="CanvasControl_CreateResources" Draw="canvasControl_Draw" ClearColor="CornflowerBlue" />
            <!--<controls2:DropShadowPanel Color="Black"
                              OffsetX="-50"
                              OffsetY="-50"
                              BlurRadius="50"
                              ShadowOpacity=".7"
                              Width="120"
                              Height="120"
                              HorizontalContentAlignment="Stretch"
                              VerticalContentAlignment="Stretch">
                <Ellipse />
            </controls2:DropShadowPanel>-->
      
        
        </Grid>
    </Page>
    

      

    using Microsoft.Graphics.Canvas;
    using Microsoft.Graphics.Canvas.Effects;
    using Microsoft.Graphics.Canvas.UI.Xaml;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Numerics;
    using System.Runtime.InteropServices.WindowsRuntime;
    using System.Threading.Tasks;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    using Windows.UI.Xaml.Shapes;
    
    // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
    
    namespace Win2DDemo
    {
        /// <summary>
        /// An empty page that can be used on its own or navigated to within a Frame.
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
    
            CanvasBitmap bitmap;
            void canvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)
            {
                //CanvasBitmap bitmap =await  CanvasBitmap.LoadAsync(sender, @"AssetsLockScreenLogo.scale-200.png");
                //实例化阴影特效
                ShadowEffect shadowEffect = new ShadowEffect
                {
                    Source = bitmap,
                    BlurAmount = 60.0f,
                    ShadowColor = Colors.Black,
                };
                //实例化变换特效
                Transform2DEffect transform2DEffect = new Transform2DEffect
                {
                    Source = shadowEffect,
                    TransformMatrix = Matrix3x2.CreateTranslation(new Vector2(10, 10)),
                };
                //实例化透明特效
                OpacityEffect opacityEffect = new OpacityEffect
                {
                    Source = transform2DEffect,
                    Opacity = 0.82f,
                };
    
    
                //实例化结合特效
                CompositeEffect effect2 = new CompositeEffect
                {
                    Sources ={
                          opacityEffect ,
                          bitmap,
                        }
                };
    
                args.DrawingSession.DrawImage(effect2, new Vector2(111,111));
    
                //CanvasCommandList cl = new CanvasCommandList(sender);
                //using (CanvasDrawingSession clds = cl.CreateDrawingSession())
                //{
                //    clds.FillRectangle(new Rect(100, 100, 100, 100), Colors.White);
                //    clds.DrawImage(bitmap, new Rect(10, 10, 100, 100));
                //}
    
                //ShadowEffect effect = new ShadowEffect()
                //{
                //    Source = cl,
                //    BlurAmount = 0.5f,
                //   //ShadowColor = Colors.Black,
                //};
                //args.DrawingSession.DrawImage(effect);
            }
    
    
            private void Page_Unloaded(object sender, RoutedEventArgs e)
            { //Microsoft.Toolkit.Uwp.UI.Controls.DropShadowPanel 
    
                if (this.canvasControl != null)
                {
                    this.canvasControl.RemoveFromVisualTree();
                    this.canvasControl = null;
                }
            }
    
            private void CanvasControl_CreateResources(CanvasControl sender, Microsoft.Graphics.Canvas.UI.CanvasCreateResourcesEventArgs args)
            {
    
                Task task = this.CreateResourcesAsync(sender);
                IAsyncAction action = task.AsAsyncAction();
                args.TrackAsyncAction(action);
            }
            private async Task CreateResourcesAsync(CanvasControl sender)
            {
                bitmap = await CanvasBitmap.LoadAsync(sender, "Assets/1.png");
            }
    
    
    
    
        }
    }
    

      

    另外Microsoft.Toolkit.Uwp.UI.Controls 里 的  DropShadowPanel 也行,但是不好用感觉。

    fffffffffffffffff
    test red font.
  • 相关阅读:
    C++ 引用与常量
    树的三种存储方法
    二叉树 基本运算
    Win10阻止电脑关机时弹出正在关闭应用的方法及恢复
    使用spring+quartz配置多个定时任务(包括项目启动先执行一次,之后再间隔时间执行)
    MySQL为某数据库中所有的表添加相同的字段
    Mysql定时任务详情
    MYSQL存储过程即常用逻辑
    后台发送请求,HttpClient的post,get各种请求,带header的请求
    java后台发送请求获取数据,并解析json数据
  • 原文地址:https://www.cnblogs.com/wgscd/p/14637927.html
Copyright © 2011-2022 走看看