先看下截圖:

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

普通效果代碼:

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. Linux 磁盘自动挂载

    磁盘代号或者装置的Label 挂载点 档案系统格式 档案系统参数 是否用dump备份 是否用fsck检查扇区         0 0         1 1         2 2 下面来写一个代表的 ...

  2. POJ - 2299 Ultra-QuickSort(归并排序)

    https://vjudge.net/problem/POJ-2299 题意 求对于给定的无序数组,求出经过最少多少次相邻元素的交换之后,可以使数组从小到大有序. 分析 很明显是求逆序对的数目,那就要 ...

  3. 那些年的 网络通信之 UDP 数据报包传输---

    下面是 一个多线程,基于 UDP 用户数据报包 协议 的 控制台聊天小程序 import java.io.*; import java.net.*; class Send implements Run ...

  4. 基于JWT(Json Web Token)的ASP.NET Web API授权方式

    token应用流程 初次登录:用户初次登录,输入用户名密码 密码验证:服务器从数据库取出用户名和密码进行验证 生成JWT:服务器端验证通过,根据从数据库返回的信息,以及预设规则,生成JWT 返还JWT ...

  5. 矩阵乘法优化DP

    本文讲一下一些基本的矩阵优化DP的方法技巧. 定义三个矩阵A,B,C,其中行和列分别为$m\times n,n \times p,m\times p$,(其中行是从上往下数的,列是从左往右数的) $C ...

  6. 面试:----Struts和springmvc的区别--区别上

    SpringMVC和Struts2的区别 1核心控制器(前端控制器,预处理控制器):对于使用过MVC框架的人来说这个词应该不会陌生.核心控制器的主要用途处理所有的请求.然后对那些特殊的请求.统一的进行 ...

  7. C. Ayoub and Lost Array(DP)

    (又是被队友带着上分的一场--) 题目链接:http://codeforces.com/contest/1105/problem/C 题目大意:给你n,l,r.每一个数都是在l,r范围之内,然后问你这 ...

  8. GDB命令

    recursiveDescription 打印view层次结构

  9. js 加alert后才能执行方法

    原因是:访问页面时,某些js方法还没初始化(或者还没有加载出来)此时调用肯定不执行.alert起到了延迟的功能,当用户点击确定此时要执行的js恰好初始化完成,能正常执行. 解决方法是 加setTime ...

  10. IDEA 2017的插件mybatis plugin

    https://my.oschina.net/u/3209432/blog/1584110 idea2017,用上面的方法安装mybatis plugin