码迷,mamicode.com
首页 > Windows程序 > 详细

C# 实现 光晕文字 发光文字

时间:2020-03-14 01:15:34      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:col   div   onclick   i++   一个   多少   string   一点   class   

有时候想要把字体整得好看一点,但是不不想去下载素材,那么怎么办呢?我有一段时间就特别想把标题整得花里胡哨的,做成一个标题控件造轮子。好了话不多少,先看效果:

技术图片技术图片

 

 给了效果图,说一下原理吧,如果我们把文字向各个方向多绘制几次,那么文字是不是会变粗呢?大家明显可以想象得到效果,仅仅变粗的文字肯定是不美观的。

我们方式座做一些改变,绘制的时候加上Alpha分量,每次向外绘制的时候,就增加一下透明度。假如我们要绘制的光晕是黑色,效果如下图:

技术图片

 

 显而易见,出现了朦胧的感觉,如果我们在绘制的起始点,也就是中心,绘制一下其它颜色,比如黄色,看一下效果会怎样呢?

 技术图片

 

 是不是效果就好看多了呢。不多说了,最后上代码:(注意,我这里为了演示,就没有写得特别复杂,也没有做成控件,写在OnPaint里面的哈)

技术图片
 1 protected override void OnPaint(PaintEventArgs e)
 2         {
 3             base.OnPaint(e);
 4             Color  shadowColor = Color.Black;//光晕的颜色
 5             int shadowWidth = 6;//光晕的宽度
 6             string text = "最美的文字是汉字";//文本
 7             Font font = new Font("华文行楷",18);//字体
 8             Graphics g = e.Graphics;//画板
 9             SizeF size = g.MeasureString(text, font);
10             PointF point = new PointF(this.ClientSize.Width / 2 - size.Width / 2, this.ClientSize.Height / 2 - size.Height / 2);
11             for (int i = 0; i < shadowWidth; i++)
12             {
13                 for (int j = 0; j < shadowWidth; j++)
14                 {
15                     g.DrawString(text, font, new SolidBrush(Color.FromArgb(255 / 5 / (i + 1), shadowColor)), new PointF(point.X + i, point.Y + j));
16                 }
17                 for (int j = 0; j < shadowWidth; j++)
18                 {
19                     g.DrawString(text, font, new SolidBrush(Color.FromArgb(255 / 5 / (i + 1), shadowColor)), new PointF(point.X - i, point.Y - j));
20                 }
21             }
22             for (int i = 0; i < shadowWidth; i++)
23             {
24                 g.DrawString(text, font, new SolidBrush(Color.FromArgb(255 / 3 / (i + 1), shadowColor)), new PointF(point.X - i, point.Y + i));
25             }
26             for (int i = 0; i < shadowWidth; i++)
27             {
28                 g.DrawString(text, font, new SolidBrush(Color.FromArgb(255 / 3 / (i + 1), shadowColor)), new PointF(point.X + i, point.Y - i));
29             }
30             g.DrawString(text, font,Brushes.Yellow, point);//本身的颜色
31         }
View Code

 

C# 实现 光晕文字 发光文字

标签:col   div   onclick   i++   一个   多少   string   一点   class   

原文地址:https://www.cnblogs.com/nickyangmiracle/p/12489994.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!