先在内存中绘画,然后将内容添加高斯模糊效果
将图像效果应用于您的内容
-
图像效果(也称为滤镜效果)是应用于像素数据的图形变换。饱和度,色调旋转和高斯模糊是一些常见的图像效果。图像效果可以链接在一起,产生复杂的视觉外观,以最小的努力。
您可以通过提供源图像(您开始使用的内容),创建效果(如 GaussianBlurEffect),设置BlurAmount等属性,然后使用DrawImage绘制效果输出来使用图像效果。
要将图像效果应用于文本和形状,您需要首先将该内容呈现为 CanvasCommandList。此对象可用作效果的输入。
-
更改canvas_Draw方法以使用以下代码:
CanvasCommandList cl = new CanvasCommandList(sender); using(CanvasDrawingSession clds = cl.CreateDrawingSession()) { for(int 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())); } }
就像你如何获得CanvasDrawingSession从CanvasDrawEventArgs 您可以用画,您可以创建一个CanvasDrawingSession从CanvasCommandList。唯一的区别是当您绘制到命令列表的绘图会话(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.再次运行该应用程序。您应该看到外观模糊的线条,文字和圆圈。
浙公网安备 33010602011771号