学海无涯

导航

先在内存中绘画,然后将内容添加高斯模糊效果

将图像效果应用于您的内容

  1. 图像效果(也称为滤镜效果)是应用于像素数据的图形变换。饱和度,色调旋转和高斯模糊是一些常见的图像效果。图像效果可以链接在一起,产生复杂的视觉外观,以最小的努力。

    您可以通过提供源图像(您开始使用的内容),创建效果(如 GaussianBlurEffect),设置BlurAmount等属性,然后使用DrawImage绘制效果输出来使用图像效果

    要将图像效果应用于文本和形状,您需要首先将该内容呈现为 CanvasCommandList此对象可用作效果的输入。

  2. 更改canvas_Draw方法以使用以下代码:

CanvasCommandList cl = new CanvasCommandList(sender);
using(CanvasDrawingSession clds = cl.CreateDrawingSession())
{ forint i = 0 ; i < 100 ; i ++)
    { 
        clds.DrawText(“Hello,World!”,RndPosition(),Color.FromArgb(255,RndByte() ,RndByte(),RndByte())); 
        clds.DrawCircle(RndPosition(),RndRadius(),Color.FromArgb(255,RndByte(),RndByte(),RndByte())); 
        clds.DrawLine(RndPosition(),RndPosition(),Color.FromArgb(255,RndByte(),RndByte(),RndByte())); 
    } 
}
    

就像你如何获得CanvasDrawingSessionCanvasDrawEventArgs 您可以用画,您可以创建一个CanvasDrawingSessionCanvasCommandList唯一的区别是当您绘制到命令列表的绘图会话(clds)时,您不会直接渲染到CanvasControl相反,命令列表是一个中间对象,它存储渲染结果供以后使用。

您可能已经注意到包含命令列表绘图会话using块。绘图会话实现 IDisposable ,必须在完成渲染时处理(using块执行此操作)。CanvasDrawingSession您从获得CanvasDrawEventArgs自动关闭你的,但你必须配置你明确创建任何绘图会话

3.最后,通过将以下代码添加到canvas_Draw方法的末尾来 定义GaussianBlurEffect

GaussianBlurEffect blur = new GaussianBlurEffect();
blur.Source = cl;
blur.BlurAmount = 10.0f;
args.DrawingSession.DrawImage(blur);

此代码创建高斯模糊,将其源设置为您刚绘制CanvasCommandList,将其模糊半径设置为10,最后将模糊的输出呈现给原始绘图会话(args.DrawingSession)。

4.再次运行该应用程序。您应该看到外观模糊的线条,文字和圆圈。

posted on 2019-08-09 14:29  宁静致远.  阅读(174)  评论(0)    收藏  举报