【WIN10】WIN2D——繪製文字
先看下截圖:

做了幾個效果:普通、倒影、陰影、歌詞。
普通效果代碼:
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——繪製文字的更多相关文章
- 【WIN10】WIN2D——基本圖形的繪製
DEMO下載地址:http://yunpan.cn/c3iNuHFFAcr8h (提取码:8e48) 先看一個截圖: 繪製了一些基本形狀. DEMO的繪製代碼都非常簡單,不想在博客裡細說了,看代碼更為 ...
- [UWP]用Win2D实现镂空文字
1. 前言 之前用PointLight做了一个番茄钟,效果还不错,具体可见这篇文章: [UWP]使用PointLight并实现动画效果 后来试玩了Win2D,这次就用Win2D实现文字的镂空效果,配合 ...
- [EmguCV|WinForm] 使用EmguCV內建直方圖工具繪製直方圖(Histogram)-直方圖(Histogram)系列 (1)
https://dotblogs.com.tw/v6610688/archive/2013/12/20/emgucv_draw_histogram_histogrambox_histogramview ...
- 使用Astah繪製UML圖形(转)
http://www.dotblogs.com.tw/clark/archive/2015/02/12/149483.aspx
- [R] 繪圖 Par 函数
本篇內文主引用 https://zhuanlan.zhihu.com/p/21394945 之內容再稍加整理並參照下方有用資源 [rdocumentation] https://www.rdocume ...
- Mac上如何把图片中的文字转换成word/pdf文字
如何把图片文字转换成word文字? - 知乎 https://www.zhihu.com/question/25488536 在 OneNote for Mac 中插入的圖片複製文字 - OneNot ...
- Android常用元件
本文来源于 http://blog.csdn.net/wxhlinux/article/details/8601170#comments 1.4 Android應用程式元件1.4.1 Activi ...
- Unity3D教程:茄子童萌會
http://s.epb.idv.tw/han-shi-ku/unity Unity 0000 Unity3D學習之路 - C#學習筆記(一) 0001 Unity3D學習之路 - C#學習筆記(二) ...
- 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 ...
随机推荐
- 20181103 Nginx(布尔教育)
nginx介绍 对标Apache服务器 目录介绍 conf 配置文件 html 网页文件 logs 日志文件 sbin 主要二进制程序 控制命令 ./nginx # 启动 nginx -t # 测试配 ...
- 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*φ ...
- android tools相关
1.showin 在include 的根节点设置,可一预览效果
- Spring RedisTemplate操作-List操作(4)
@Autowired @Resource(name="redisTemplate") private RedisTemplate<String, String> rt; ...
- vue-cli构建项目使用 less
在vue-cli中构建的项目是可以使用less的,但是查看package.json可以发现,并没有less相关的插件,所以我们需要自行安装. 第一步:安装 npm install less less- ...
- 《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本
11.1使用多个命令 $date;who // 命令列表,加入分号就可以,这样会依次执行.参见5.2.1节 注意区分$(date;who),这个是进程列表,会生成一个子shell来执行 Shel ...
- struts的理解
1.struts是一个按MVC模式设计的Web层框架,其实他就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.xm ...
- PHP删除数组中空值
array_filter 函数的功能是利用回调函数来对数组进行过滤,一直都以为用回调函数才能处理, 却没有发现手册下面还有一句,如果没有回调函数,那么默认就是删除数组中值为false的项目 代码: ...
- CSS text系列
text-shadow 语法规则: h-shadow(必需,水平阴影的位置,可负): v-shadow(必需,垂直阴影的位置,可负): blur(可选,模糊距离): color(可选,阴影的颜色). ...
- Linux内存管理 【转】
转自:http://blog.chinaunix.net/uid-25909619-id-4491368.html Linux内存管理 摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理 ...