WinForms 使用Graphics绘制字体阴影

 C#以两种方法实现文字阴影效果,同时还实现了简单的动画效果:
  一种是对文本使用去锯齿的边缘处理,在两个不同的位置绘制文本,形成阴影;
  另一个是以阴影为线条,构造影线画刷,先画背景再画前景,使用graphics.DrawString来绘制文字的阴影。

实现效果如下:
1.jpg

啥也不说了、直接上代码,源码中有注释:

WinForms 使用Graphics绘制字体阴影
 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 }
使用Graphics绘制字体阴影

 

 

【来自:[LonelyShadow 博客] http://www.cnblogs.com/LonelyShadow

 

你可能感兴趣的:(graphics)