zoukankan      html  css  js  c++  java
  • asp.net 创建文字特效

    相信word 中的 艺术字 功能大家都不陌生。今天, 我们就利用C#来制作几款自己的艺术字, 可能会对我们了解字体图像的制作原理有一些帮助. 至于有没有使用价值我保持沉默.

    一. 投影效果

    程序运行效果截图:

    程序代码实现如下:

    投影效果代码
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    //投影文字
    Graphics g = this.CreateGraphics();
    //设置文本输出质量
    g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    Font newFont = new Font("Times New Roman", 48);
    Matrix matrix = new Matrix();
    //投射
    matrix.Shear(-1.5f, 0.0f);
    //缩放
    matrix.Scale(1, 0.5f);
    //平移
    matrix.Translate(130, 88);
    //对绘图平面实施坐标变换、、
    g.Transform = matrix;
    SolidBrush grayBrush = new SolidBrush(Color.Gray);
    SolidBrush colorBrush = new SolidBrush(Color.BlueViolet);
    string text = "博客园";
    //绘制阴影
    g.DrawString(text, newFont, grayBrush, new PointF(0, 30));
    g.ResetTransform();
    //绘制前景
    g.DrawString(text, newFont, colorBrush, new PointF(0, 30));
    }

    二. 浮雕效果


    程序运行效果截图:

    程序代码实现如下:


    浮雕文字实现
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    //浮雕文字
    Brush backBrush = Brushes.Black;
    Brush foreBrush = Brushes.White;
    Font font = new Font("宋体", Convert.ToInt16(40), FontStyle.Regular);
    Graphics g = this.CreateGraphics();
    string text = "博客园";
    SizeF size = g.MeasureString(text, font);
    Single posX = (this.Width - Convert.ToInt16(size.Width)) / 2;
    Single posY = (this.Height - Convert.ToInt16(size.Height)) / 2;
    g.DrawString(text, font, backBrush, posX+1, posY+1);
    g.DrawString(text, font, foreBrush, posX, posY);
    }

    三. 印版效果


    程序运行效果截图:

    程序代码实现如下:


    印版文字实现
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    //印版文字
    int i = 0;
    Brush backBrush = Brushes.Black;
    Brush foreBrush = Brushes.Violet;
    Font font = new Font("Times New Roman", System.Convert.ToInt16(40), FontStyle.Regular);
    Graphics g = this.CreateGraphics();
    g.Clear(Color.White);
    string text = "博客园";
    SizeF size = g.MeasureString(text, font);
    Single posX = (this.Width - Convert.ToInt16(size.Width)) / 2;
    Single posY = (this.Height - Convert.ToInt16(size.Height)) / 3;
    while (i < Convert.ToInt16(20))
    {
    g.DrawString(text, font, backBrush, posX - i, posY + i);
    i = i + 1;
    }
    g.DrawString(text, font, foreBrush, posX, posY);
    }

    四. 倒影效果


    程序运行效果截图:


    程序代码实现如下:

    倒影文字实现
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    //倒影文字
    Brush backBrush = Brushes.Gray;
    Brush foreBrush = Brushes.Black;
    Font font = new Font("幼圆", Convert.ToInt16(40), FontStyle.Regular);
    Graphics g = this.CreateGraphics();
    string text = "博客园";
    SizeF size = g.MeasureString(text, font);
    int posX = (this.Width - Convert.ToInt16(size.Width)) / 2;
    int posY = (this.Height - Convert.ToInt16(size.Height)) / 2;
    g.TranslateTransform(posX, posY);
    int ascent = font.FontFamily.GetCellAscent(font.Style);
    int spacing = font.FontFamily.GetLineSpacing(font.Style);
    int lineHeight = System.Convert.ToInt16(font.GetHeight(g));
    int height = lineHeight * ascent / spacing;
    GraphicsState state = g.Save();
    g.ScaleTransform(1, -1.0F);
    g.DrawString(text, font, backBrush, 0, -height);
    g.Restore(state);
    g.DrawString(text, font, foreBrush, 0, -height);
    }

    五. 阴影效果
    程序运行效果截图:


    阴影文字实现
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    //阴影文字
    string text = "博客园";
    Brush shadowBrush = Brushes.Gray;
    Brush foreBrush = Brushes.Black;
    Font font = new Font("幼圆", Convert.ToInt16(40), FontStyle.Regular);
    Graphics g = this.CreateGraphics();
    SizeF size = g.MeasureString(text, font);
    Single posX = (this.Width - Convert.ToInt16(size.Width)) / 4;
    Single posY = (this.Height - Convert.ToInt16(size.Height)) / 3;
    g.DrawString(text, font, shadowBrush, posX + Convert.ToInt16(20), posY + Convert.ToInt16(20));
    g.DrawString(text, font, foreBrush, posX, posY);
    }

    六.纹理效果

    程序运行效果截图:

    程序代码实现如下:

    线理效果实现
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    //使用图像填充文字线条
    TextureBrush brush = new TextureBrush(Image.FromFile(Application.StartupPath + "\myPicture.jpg"));
    Graphics g = e.Graphics;
    g.DrawString("博客园", new Font("隶书", 60), brush, new PointF(0, 0)); 
    }

    七. 倾斜效果

    程序运行效果截图:

    程序代码实现如下:

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

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

    //左倾斜文字
    float shearX = 0.550F; 
    float shearY = 0.10F;
    transform.Shear(shearX, shearY);
    g.Transform = transform;
    g.DrawString(text, font, foreBrush, 0, 0);
    }

    八.渐变色效果

    程序代码实现如下:

    渐变色效果实现
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    //渐变色文字
    String text = " 博客园";
    Brush ShadowBrush = Brushes.Gray;
    Brush ForeBrush = Brushes.Black;
    Font font = new Font("幼圆", System.Convert.ToInt16(40), FontStyle.Regular);
    Graphics g = this.CreateGraphics();
    //g.Clear(Color.White);
    PointF point = new PointF(0, 0);
    SizeF size = g.MeasureString(text, font);
    RectangleF rectangle = new RectangleF(point, size);
    Brush brush = new LinearGradientBrush(rectangle, Color.Red, Color.Green, LinearGradientMode.Horizontal);
    int width = (this.Width - Convert.ToInt16(size.Width)) / 2;
    int height = (this.Height - Convert.ToInt16(size.Height)) / 2;
    g.DrawString(text, font, brush, width, height);
    }

    九. 旋转效果

    程序运行效果截图:

    程序代码实现如下:

    旋转效果实现
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    //旋转显示文字
    Graphics g = e.Graphics;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    for (int i = 0; i <= 360; i += 10)

    //平移Graphics对象到窗体中心
    g.TranslateTransform(this.Width / 2, this.Height / 2);
    //设置Graphics对象的输出角度
    g.RotateTransform(i);
    //设置文字填充颜色
    Brush brush = Brushes.DarkViolet;
    //旋转显示文字
    g.DrawString(".bo ke yuan ", new Font("Lucida Console", 11f), brush, 0, 0);
    //恢复全局变换矩阵
    g.ResetTransform();
    }
    }

    十. ..........

    后记:

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

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

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

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

  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/ranran/p/3858821.html
Copyright © 2011-2022 走看看