先看下截圖:

做了幾個效果:普通、倒影、陰影、歌詞。

普通效果代碼:

private void normal_Draw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
{
CanvasTextFormat fmt = new CanvasTextFormat();
fmt.FontFamily = "Vladimir Script";
fmt.FontSize = ;
args.DrawingSession.DrawText("Hello Win2D", , , Color.FromArgb(, , , ), fmt);
}

倒影效果代碼,這個是使用scale變換做到的,使用scaleY=-1,就把它的Y值調換,達到我們的效果了,同時還必須設定圓心,然它會跑到其它地方了。

同時,要弄一個逐漸消失的效果,即要設透明度。

private void rotate_Draw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
{ CanvasTextFormat fmt = new CanvasTextFormat();
fmt.FontFamily = "Vladimir Script";
fmt.FontSize = ; args.DrawingSession.DrawText("Hello Win2D", , , Color.FromArgb(, , , ), fmt); CanvasGradientStop[] gradientStops = new CanvasGradientStop[];
gradientStops[] = new CanvasGradientStop();
gradientStops[].Color = Color.FromArgb(, , , );
gradientStops[].Position =0f; gradientStops[] = new CanvasGradientStop();
gradientStops[].Color = Color.FromArgb(, , , );
gradientStops[].Position = 1f; CanvasLinearGradientBrush br = new CanvasLinearGradientBrush(sender, gradientStops);
br.StartPoint = new Vector2(, );
br.EndPoint = new Vector2(, ); args.DrawingSession.Transform = Matrix3x2.CreateScale(new Vector2(, -), new Vector2(, ));
args.DrawingSession.DrawText("Hello Win2D", , , br, fmt);
}

陰影效果。

這個是先畫一個模糊的背景,再在上面畫上清晰的文字。

private void shadow_Draw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
{
CanvasTextFormat fmt = new CanvasTextFormat() { FontSize = , FontFamily = "Vladimir Script" }; var myBitmap = new CanvasRenderTarget(sender, , );
using (var ds = myBitmap.CreateDrawingSession())
{
ds.DrawText("Hello Win2D", , , Colors.Green, fmt);
} var blur = new GaussianBlurEffect
{
BlurAmount = ,
Source = myBitmap
}; args.DrawingSession.DrawImage(blur, , );
args.DrawingSession.DrawText("Hello Win2D", , , Colors.Green, fmt);
}

歌詞效果就相對比較簡單了。主要要注意的是,要把字符的換行設為NoWrapping。

private void song_Draw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
{
var fmt = new CanvasTextFormat();
fmt.FontFamily = "微软雅黑";
fmt.FontSize = ;
fmt.WordWrapping = CanvasWordWrapping.NoWrap;
fmt.Options = CanvasDrawTextOptions.Clip; Rect rcNormal = new Rect(, , sender.ActualWidth, sender.ActualHeight);
args.DrawingSession.DrawText(songInfo_, rcNormal, Colors.Aqua, fmt); Rect rcSang = new Rect(, , songPos_, sender.ActualHeight);
args.DrawingSession.DrawText(songInfo_, rcSang, Colors.Yellow, fmt);
}

設一個定時器,動態改變 songPos_ 即可。

【WIN10】WIN2D——繪製文字的更多相关文章

  1. 【WIN10】WIN2D——基本圖形的繪製

    DEMO下載地址:http://yunpan.cn/c3iNuHFFAcr8h (提取码:8e48) 先看一個截圖: 繪製了一些基本形狀. DEMO的繪製代碼都非常簡單,不想在博客裡細說了,看代碼更為 ...

  2. [UWP]用Win2D实现镂空文字

    1. 前言 之前用PointLight做了一个番茄钟,效果还不错,具体可见这篇文章: [UWP]使用PointLight并实现动画效果 后来试玩了Win2D,这次就用Win2D实现文字的镂空效果,配合 ...

  3. [EmguCV|WinForm] 使用EmguCV內建直方圖工具繪製直方圖(Histogram)-直方圖(Histogram)系列 (1)

    https://dotblogs.com.tw/v6610688/archive/2013/12/20/emgucv_draw_histogram_histogrambox_histogramview ...

  4. 使用Astah繪製UML圖形(转)

    http://www.dotblogs.com.tw/clark/archive/2015/02/12/149483.aspx

  5. [R] 繪圖 Par 函数

    本篇內文主引用 https://zhuanlan.zhihu.com/p/21394945 之內容再稍加整理並參照下方有用資源 [rdocumentation] https://www.rdocume ...

  6. Mac上如何把图片中的文字转换成word/pdf文字

    如何把图片文字转换成word文字? - 知乎 https://www.zhihu.com/question/25488536 在 OneNote for Mac 中插入的圖片複製文字 - OneNot ...

  7. Android常用元件

    本文来源于 http://blog.csdn.net/wxhlinux/article/details/8601170#comments 1.4  Android應用程式元件1.4.1  Activi ...

  8. Unity3D教程:茄子童萌會

    http://s.epb.idv.tw/han-shi-ku/unity Unity 0000 Unity3D學習之路 - C#學習筆記(一) 0001 Unity3D學習之路 - C#學習筆記(二) ...

  9. morris的用法

    參數選項說明: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

随机推荐

  1. 20181103 Nginx(布尔教育)

    nginx介绍 对标Apache服务器 目录介绍 conf 配置文件 html 网页文件 logs 日志文件 sbin 主要二进制程序 控制命令 ./nginx # 启动 nginx -t # 测试配 ...

  2. BSGS 算法

    求解 A^x ≡ B mod C  C是质数 的最小非负整数解 证明:A^x ≡ A^(x%φ(C)) mod C A^(x%φ(C))  ≡ A^(x-k*φ(C)) ≡ (A^x)/ A^(k*φ ...

  3. android tools相关

    1.showin 在include 的根节点设置,可一预览效果

  4. Spring RedisTemplate操作-List操作(4)

    @Autowired @Resource(name="redisTemplate") private RedisTemplate<String, String> rt; ...

  5. vue-cli构建项目使用 less

    在vue-cli中构建的项目是可以使用less的,但是查看package.json可以发现,并没有less相关的插件,所以我们需要自行安装. 第一步:安装 npm install less less- ...

  6. 《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本

    11.1使用多个命令 $date;who   //  命令列表,加入分号就可以,这样会依次执行.参见5.2.1节 注意区分$(date;who),这个是进程列表,会生成一个子shell来执行 Shel ...

  7. struts的理解

    1.struts是一个按MVC模式设计的Web层框架,其实他就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.xm ...

  8. PHP删除数组中空值

    array_filter   函数的功能是利用回调函数来对数组进行过滤,一直都以为用回调函数才能处理, 却没有发现手册下面还有一句,如果没有回调函数,那么默认就是删除数组中值为false的项目 代码: ...

  9. CSS text系列

    text-shadow 语法规则: h-shadow(必需,水平阴影的位置,可负): v-shadow(必需,垂直阴影的位置,可负): blur(可选,模糊距离): color(可选,阴影的颜色). ...

  10. Linux内存管理 【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-4491368.html Linux内存管理 摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理 ...