天天看點

C# GDI+ 文字操作

一、投影文字

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 = "MINGRISOFT";

//繪制陰影

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.Gray;

Brush foreBrush = Brushes.Black;

Font font = new Font("幼圓", Convert.ToInt16(40), FontStyle.Regular);

Graphics g = this.CreateGraphics();

string text = "MINGRISOFT";

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)

{

//使用圖像填充文字線條

TextureBrush brush = new TextureBrush(Image.FromFile(Application.StartupPath + "//花.jpg"));

Graphics g = e.Graphics;

g.DrawString("MINGRISOFT", new Font("隸書", 60), brush, new PointF(0, 0));

}

四、旋轉文字

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("......MINGRISOFT", new Font("Lucida Console", 11f), brush, 0, 0);

//恢複全局變換矩陣

g.ResetTransform();

}

}

五、印版文字

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 = "MINGRISOFT";

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);

}