先看下截圖:

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

普通效果代碼:

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. bzoj千题计划233:bzoj 1304: [CQOI2009]叶子的染色

    http://www.lydsy.com/JudgeOnline/problem.php?id=1304 结论1:根节点一定染色 如果根节点没有染色,选择其子节点的一个颜色,那么所有这个颜色的子节点都 ...

  2. jdk1.8.0_45源码解读——HashMap的实现

    jdk1.8.0_45源码解读——HashMap的实现 一.HashMap概述 HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射操作.存储的是<key,value>对 ...

  3. ASP.NET MVC学习(三)之过滤器Filter

    http://www.cnblogs.com/yaopengfei/p/7910763.html

  4. [整理]解析Json需要设置Mime

    IIS6.0 1.打开IIS添加Mime项 关联扩展名:*.json内容类型(MIME):application/x-javascript 2.添加映射: 位置在IIS对应站点右键属性:”主目录”-” ...

  5. [转载]使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)

    http://www.cnblogs.com/benbenkoala/archive/2009/03/11/1407793.html 引言:SQL Server的事务日志传送备份是仅次于镜像的高可靠性 ...

  6. Windows bat 学习(高级)

    有一种叫做 Command Processor Extensions 的东西,即命令处理器扩展.他会使命令更加高级,功能更多. 在 cmd 里可以使用 ECHO %CMDEXTVERSION% 查看当 ...

  7. linux - JDK 环境

    JDK安装 vi /etc/profile # 添加环境变量 export JAVA_HOME=/usr/local/jdk1.8.2_45 export CLASSPATH=.:$JAVA_HOME ...

  8. input同名

    form表单传值,当,input的 name相同时候,可以同时传值. 当你提交时,你获取的同name数据会被后加载的那个input替代.容易造成数据混乱,但是,可以在某些特殊情况使用.比如,selec ...

  9. org.hibernate.TransientObjectException异常

    代码如下: /** * 测试4:新增一个秘书角色,并赋给张三该角色 */ @Test public void test4(){ Session session = HibernateUtils.ope ...

  10. word技巧

    1.插入注解(脚注和尾注) 2.复制的图片显示不全怎么办? 横向显示,或者图片另存为然后保存为PPT 3.word修订标记的添加和删除(最终版) 4.word中表格样式调整 5.修改标题的样式和标题的 ...