【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 = 30;
    args.DrawingSession.DrawText("Hello Win2D", 0, 0, Color.FromArgb(255, 255, 255, 255), 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 = 30;

    args.DrawingSession.DrawText("Hello Win2D", 0, 0, Color.FromArgb(255, 255, 255, 255), fmt);

    CanvasGradientStop[] gradientStops = new CanvasGradientStop[2];
    gradientStops[0] = new CanvasGradientStop();
    gradientStops[0].Color = Color.FromArgb(0, 0, 0, 0);
    gradientStops[0].Position =0f;

    gradientStops[1] = new CanvasGradientStop();
    gradientStops[1].Color = Color.FromArgb(255, 255, 255, 255);
    gradientStops[1].Position = 1f;

    CanvasLinearGradientBrush br = new CanvasLinearGradientBrush(sender, gradientStops);
    br.StartPoint = new Vector2(0, 50);
    br.EndPoint = new Vector2(0, 80);

    args.DrawingSession.Transform = Matrix3x2.CreateScale(new Vector2(1, -1), new Vector2(0, 55));
    args.DrawingSession.DrawText("Hello Win2D", 0, 40, 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 = 72, FontFamily = "Vladimir Script" };

    var myBitmap = new CanvasRenderTarget(sender, 512, 96);
    using (var ds = myBitmap.CreateDrawingSession())
    {
        ds.DrawText("Hello Win2D", 0, 0, Colors.Green, fmt);
    }

    var blur = new GaussianBlurEffect
    {
        BlurAmount = 3,
        Source = myBitmap
    };

    args.DrawingSession.DrawImage(blur, 4, 4);
    args.DrawingSession.DrawText("Hello Win2D", 0, 0, 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 = 72;
    fmt.WordWrapping = CanvasWordWrapping.NoWrap;
    fmt.Options = CanvasDrawTextOptions.Clip;

    Rect rcNormal = new Rect(0, 0, sender.ActualWidth, sender.ActualHeight);
    args.DrawingSession.DrawText(songInfo_, rcNormal, Colors.Aqua, fmt);

    Rect rcSang = new Rect(0, 0, songPos_, sender.ActualHeight);
    args.DrawingSession.DrawText(songInfo_, rcSang, Colors.Yellow, fmt);
}

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

时间: 2024-10-12 02:16:34

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

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

DEMO下載地址:http://yunpan.cn/c3iNuHFFAcr8h (提取码:8e48) 先看一個截圖: 繪製了一些基本形狀. DEMO的繪製代碼都非常簡單,不想在博客裡細說了,看代碼更為清晰些. 可能繪製扇形的代碼有些麻煩些. 微軟是使用鐘錶的轉動方向(順時針)作為弧度運轉方向的,所以角度30度,是會在x座標下的,而不是通常的在x座標上面. 帖一下畫鐘錶的代碼,是非常簡單的: private void clock_Draw(CanvasControl sender, CanvasD

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

https://dotblogs.com.tw/v6610688/archive/2013/12/20/emgucv_draw_histogram_histogrambox_histogramviewer.aspx //2.使用HistogramBox imgHistogramBox.GenerateHistograms(loadImg, 32); imgHistogramBox.Refresh(); //更新資料 imgHistogramBox.Show();

使用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.rdocumentation.org/packages/graphics/versions/3.5.2/topics/par [Quick-R] https://www.statmethods.net/advgraphs/parameters.html par 可以設置的繪圖相關參數有3 類: 只可以查詢而不可以

NinePatch图片

绍 参考 :http://blog.sina.com.cn/s/blog_5033827f0100r4dm.html NinePatch图片以*.9.png结尾,和普通图片的区别是四周多了一个边框(如下图所示): 如上图所示,左边那条黑色线代表图片垂直拉伸的区域,上边的那条黑色线代表水平拉伸区域,右边的黑色线代表内容绘制的垂直区域,下边的黑色线代表内容绘制的水平区域,右边和下边的线是可选的,左边和上边的线不能省略. 采用NinePatch图片做背景,可使背景随着内容的拉伸(缩小)而拉伸(缩小).

Android常用元件

本文来源于 http://blog.csdn.net/wxhlinux/article/details/8601170#comments 1.4  Android應用程式元件1.4.1  Activity活動程式1.4.2  Service服務程式1.4.3  BroadcastReceiver廣播接收器1.4.4  ContentProvider內容提供器1.4.5  Intent啟動組件1.4.6  View視圖組件 5.1  TextView類:文本框5.1.1  append方法:追加文

9patch

1:介绍 参考 :http://blog.sina.com.cn/s/blog_5033827f0100r4dm.html NinePatch图片以*.9.png结尾,和普通图片的区别是四周多了一个边框(如下图所示): 如上图所示,左边那条黑色线代表图片垂直拉伸的区域,上边的那条黑色线代表水平拉伸区域,右边的黑色线代表内容绘制的垂直区域,下边的黑色线代表内容绘制的水平区域,右边和下边的线是可选的,左边和上边的线不能省略. 采用NinePatch图片做背景,可使背景随着内容的拉伸(缩小)而拉伸(缩

matplotlib+pyqt4 内容整理

最近学习了matplotlib的内容,在这里做一些总结. 参考:vamei博客(Python的也可以看其教程)http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html http://reverland.org/python/2012/09/07/matplotlib-tutorial/ http://myshare.dscloud.me/scipydoc/matplotlib_intro.html#axis(这个文章很好的解释了fi

button属性值

AccessibilityObject 取得指定給控制項的 AccessibleObject. (繼承自 Control). AccessibleDefaultActionDescription 取得或設定協助工具用戶端應用程式所使用的控制項的預設動作描述. (繼承自 Control). AccessibleDescription 取得或設定可及性用戶端應用程式使用之控制項的描述. (繼承自 Control). AccessibleName 取得或設定可及性用戶端應用程式使用的控制項名稱. (繼