学前教育专业培养方案:C#制作艺术字

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 09:30:16
今天, 我们就利用C#来制作几款自己的艺术字, 可能会对我们了解字体图像的制作原理有一些帮助. 至于有没有使用价值我保持沉默. 

一. 投影效果

程序代码实现如下:

投影效果代码
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. //投影文字
  4. Graphics g = this.CreateGraphics();
  5. //设置文本输出质量
  6. g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
  7. g.SmoothingMode = SmoothingMode.AntiAlias;
  8. Font newFont = new Font("Times New Roman", 48);
  9. Matrix matrix = new Matrix();
  10. //投射
  11. matrix.Shear(-1.5f, 0.0f);
  12. //缩放
  13. matrix.Scale(1, 0.5f);
  14. //平移
  15. matrix.Translate(130, 88);
  16. //对绘图平面实施坐标变换、、
  17. g.Transform = matrix;
  18. SolidBrush grayBrush = new SolidBrush(Color.Gray);
  19. SolidBrush colorBrush = new SolidBrush(Color.BlueViolet);
  20. string text = "博客园";
  21. //绘制阴影
  22. g.DrawString(text, newFont, grayBrush, new PointF(0, 30));
  23. g.ResetTransform();
  24. //绘制前景
  25. g.DrawString(text, newFont, colorBrush, new PointF(0, 30));
  26. }
复制代码二. 浮雕效果   


程序代码实现如下:


浮雕文字实现
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. //浮雕文字
  4. Brush backBrush = Brushes.Black;
  5. Brush foreBrush = Brushes.White;
  6. Font font = new Font("宋体", Convert.ToInt16(40), FontStyle.Regular);
  7. Graphics g = this.CreateGraphics();
  8. string text = "博客园";
  9. SizeF size = g.MeasureString(text, font);
  10. Single posX = (this.Width - Convert.ToInt16(size.Width)) / 2;
  11. Single posY = (this.Height - Convert.ToInt16(size.Height)) / 2;
  12. g.DrawString(text, font, backBrush, posX+1, posY+1);
  13. g.DrawString(text, font, foreBrush, posX, posY);
  14. }
复制代码三. 印版效果

程序代码实现如下:


印版文字实现
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. //印版文字
  4. int i = 0;
  5. Brush backBrush = Brushes.Black;
  6. Brush foreBrush = Brushes.Violet;
  7. Font font = new Font("Times New Roman", System.Convert.ToInt16(40), FontStyle.Regular);
  8. Graphics g = this.CreateGraphics();
  9. g.Clear(Color.White);
  10. string text = "博客园";
  11. SizeF size = g.MeasureString(text, font);
  12. Single posX = (this.Width - Convert.ToInt16(size.Width)) / 2;
  13. Single posY = (this.Height - Convert.ToInt16(size.Height)) / 3;
  14. while (i < Convert.ToInt16(20))
  15. {
  16. g.DrawString(text, font, backBrush, posX - i, posY + i);
  17. i = i + 1;
  18. }
  19. g.DrawString(text, font, foreBrush, posX, posY);
  20. }
复制代码四. 倒影效果


程序代码实现如下:



倒影文字实现
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. //倒影文字
  4. Brush backBrush = Brushes.Gray;
  5. Brush foreBrush = Brushes.Black;
  6. Font font = new Font("幼圆", Convert.ToInt16(40), FontStyle.Regular);
  7. Graphics g = this.CreateGraphics();
  8. string text = "博客园";
  9. SizeF size = g.MeasureString(text, font);
  10. int posX = (this.Width - Convert.ToInt16(size.Width)) / 2;
  11. int posY = (this.Height - Convert.ToInt16(size.Height)) / 2;
  12. g.TranslateTransform(posX, posY);
  13. int ascent = font.FontFamily.GetCellAscent(font.Style);
  14. int spacing = font.FontFamily.GetLineSpacing(font.Style);
  15. int lineHeight = System.Convert.ToInt16(font.GetHeight(g));
  16. int height = lineHeight * ascent / spacing;
  17. GraphicsState state = g.Save();
  18. g.ScaleTransform(1, -1.0F);
  19. g.DrawString(text, font, backBrush, 0, -height);
  20. g.Restore(state);
  21. g.DrawString(text, font, foreBrush, 0, -height);
  22. }
复制代码五. 阴影效果

阴影文字实现
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. //阴影文字
  4. string text = "博客园";
  5. Brush shadowBrush = Brushes.Gray;
  6. Brush foreBrush = Brushes.Black;
  7. Font font = new Font("幼圆", Convert.ToInt16(40), FontStyle.Regular);
  8. Graphics g = this.CreateGraphics();
  9. SizeF size = g.MeasureString(text, font);
  10. Single posX = (this.Width - Convert.ToInt16(size.Width)) / 4;
  11. Single posY = (this.Height - Convert.ToInt16(size.Height)) / 3;
  12. g.DrawString(text, font, shadowBrush, posX + Convert.ToInt16(20), posY + Convert.ToInt16(20));
  13. g.DrawString(text, font, foreBrush, posX, posY);
  14. }
复制代码六.纹理效果


程序代码实现如下:

纹理效果实现
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. //使用图像填充文字线条
  4. TextureBrush brush = new TextureBrush(Image.FromFile(Application.StartupPath + "\\myPicture.jpg"));
  5. Graphics g = e.Graphics;
  6. g.DrawString("博客园", new Font("隶书", 60), brush, new PointF(0, 0));
  7. }
复制代码七. 倾斜效果


程序代码实现如下:



倾斜效果实现
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. Brush foreBrush = Brushes.Blue;
  4. Font font = new Font("幼圆", Convert.ToInt16(40), FontStyle.Regular);
  5. Graphics g = this.CreateGraphics();
  6. string text = "博客园";
  7. SizeF size = g.MeasureString(text, font);
  8. Single posX = (this.Width - Convert.ToInt16(size.Width)) / 2;
  9. Single posY = (this.Height - Convert.ToInt16(size.Height)) / 2;
  10. g.TranslateTransform(posX, posY);
  11. Matrix transform = g.Transform;

  12. //右倾斜文字
  13. //float shearX = -0.230F;

  14. //左倾斜文字
  15. float shearX = 0.550F;
  16. float shearY = 0.10F;
  17. transform.Shear(shearX, shearY);
  18. g.Transform = transform;
  19. g.DrawString(text, font, foreBrush, 0, 0);
  20. }
复制代码八.渐变色效果

程序代码实现如下:

渐变色效果实现
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. //渐变色文字
  4. String text = " 博客园";
  5. Brush ShadowBrush = Brushes.Gray;
  6. Brush ForeBrush = Brushes.Black;
  7. Font font = new Font("幼圆", System.Convert.ToInt16(40), FontStyle.Regular);
  8. Graphics g = this.CreateGraphics();
  9. //g.Clear(Color.White);
  10. PointF point = new PointF(0, 0);
  11. SizeF size = g.MeasureString(text, font);
  12. RectangleF rectangle = new RectangleF(point, size);
  13. Brush brush = new LinearGradientBrush(rectangle, Color.Red, Color.Green, LinearGradientMode.Horizontal);
  14. int width = (this.Width - Convert.ToInt16(size.Width)) / 2;
  15. int height = (this.Height - Convert.ToInt16(size.Height)) / 2;
  16. g.DrawString(text, font, brush, width, height);
  17. }
复制代码九. 旋转效果

程序代码实现如下:

旋转效果实现
  1. private void Form1_Paint(object sender, PaintEventArgs e)
  2. {
  3. //旋转显示文字
  4. Graphics g = e.Graphics;
  5. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
  6. for (int i = 0; i <= 360; i += 10)
  7. {
  8. //平移Graphics对象到窗体中心
  9. g.TranslateTransform(this.Width / 2, this.Height / 2);
  10. //设置Graphics对象的输出角度
  11. g.RotateTransform(i);
  12. //设置文字填充颜色
  13. Brush brush = Brushes.DarkViolet;
  14. //旋转显示文字
  15. g.DrawString(".bo ke yuan ", new Font("Lucida Console", 11f), brush, 0, 0);
  16. //恢复全局变换矩阵
  17. g.ResetTransform();
  18. }
  19. }
复制代码十. ..........

后记:

还有很多, 原理都相当简单, 绘制字体图关键要熟悉三个常用绘图类

Brush, Font, Graphics; 这里用到的主要方法是Graphics类的 DrowString.

此方法共有6个版本, 这里用到的版本是

g.DrawString("文本", "字体", "画刷", "X开始坐标", "Y开始坐标")

暂到此...

希望对大家有所帮助.