C#以两种方法实现文字阴影效果,同时还实现了简单的动画效果:
一种是对文本使用去锯齿的边缘处理,在两个不同的位置绘制文本,形成阴影;
另一个是以阴影为线条,构造影线画刷,先画背景再画前景,使用graphics.DrawString来绘制文字的阴影。
实现效果如下:
啥也不说了、直接上代码,源码中有注释:
1 using System; 2 using System.Collections.Generic; 3 using System.Drawing; 4 using System.Drawing.Drawing2D; 5 using System.Linq; 6 using System.Windows.Forms; 7 8 namespace Guying.Project.DrawFontShadow 9 { 10 public partial class FrmMain : Form 11 { 12 public FrmMain() 13 { 14 InitializeComponent(); 15 } 16 17 protected override void OnPaint(PaintEventArgs e) 18 { 19 base.OnPaint(e); 20 Graphics graphics = e.Graphics; 21 graphics.Clear(Color.White); 22 //对文本使用去锯齿的边缘处理 23 FontFamily fontFamily = new FontFamily("宋体"); 24 Font font = new Font(fontFamily, 100, FontStyle.Bold, GraphicsUnit.Pixel); 25 //文本输出框 26 RectangleF textout = new RectangleF(font.Height, this.ClientSize.Height / 2, this.ClientSize.Width, this.ClientSize.Height); 27 //在两个不同的位置绘制文本,形成阴影 28 //solidBrush的色彩透明度为100,暗黑 29 SolidBrush solidBrush = new SolidBrush(Color.FromArgb(100, Color.Black)); 30 SolidBrush redBrush = new SolidBrush(Color.Blue); 31 graphics.DrawString("孤影", font, solidBrush, 32 new PointF(27.0f, 27.0f)); 33 graphics.DrawString("孤影", font, redBrush, 34 new PointF(12.0f, 20.0f)); 35 //另一种阴影字,阴影为线条 36 //构造影线画刷 37 HatchBrush brush_tmp = new HatchBrush( 38 HatchStyle.DarkDownwardDiagonal, Color.Black, Color.White); 39 int reptime = 40; 40 //先画背景 41 for (int i = 0; i < reptime; i++) 42 graphics.DrawString("您好", font, brush_tmp, 43 new PointF(textout.X + i + 2, textout.Y + i + 2)); 44 //再画前景 45 graphics.DrawString("您好", font, Brushes.Blue, new PointF(textout.X, textout.Y)); 46 } 47 }
【来自:[LonelyShadow 博客] http://www.cnblogs.com/LonelyShadow】