• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
遥远的梦
--心有多大, 世界就有多大
博客园    首页    新随笔    联系   管理    订阅  订阅
C#制作 艺术字

       相信    中的 艺术字 功能大家都不陌生, 前面这个 "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开始坐标")

暂到此...

希望对大家有所帮助.

 

程序运行效果截图:

posted on 2008-09-22 22:26  子逸  阅读(12682)  评论(22)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3