Rumah pembangunan bahagian belakang Tutorial C#.Net C#常用GDI+文字操作汇总

C#常用GDI+文字操作汇总

Dec 17, 2016 am 09:55 AM

本文实例汇总了C#常用GDI+文字操作,包含了文字的投影、倒影、旋转等常见的效果,在进行C#应用程序开发中有不错的实用价值。分享给大家供大家参考之用。具体如下:

一、投影文字

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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

}

Salin selepas log masuk

二、倒影文字

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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

}

Salin selepas log masuk

三、文字填充线条

1

2

3

4

5

6

7

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

}

Salin selepas log masuk

四、旋转文字

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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

  }

}

Salin selepas log masuk

五、印版文字

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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

}

Salin selepas log masuk

相信本文所述实例对大家的C#程序设计有一定的帮助。

更多C#常用GDI+文字操作汇总相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

.NET Deep Dive: Menguasai Pengaturcaraan Asynchronous, Linq, dan EF Core .NET Deep Dive: Menguasai Pengaturcaraan Asynchronous, Linq, dan EF Core Mar 31, 2025 pm 04:07 PM

Konsep teras. NET Pengaturcaraan Asynchronous, Linq dan Efcore adalah: 1. Pengaturcaraan Asynchronous meningkatkan respons aplikasi melalui async dan menunggu; 2. Linq memudahkan pertanyaan data melalui sintaks bersatu; 3. EFCORE memudahkan operasi pangkalan data melalui ORM.

Advanced C# .NET: Concurrency, Paralelism, dan Multithreading dijelaskan Advanced C# .NET: Concurrency, Paralelism, dan Multithreading dijelaskan Apr 03, 2025 am 12:01 AM

C#.NET menyediakan alat yang berkuasa untuk pengaturcaraan serentak, selari dan multithreaded. 1) Gunakan kelas benang untuk membuat dan menguruskan benang, 2) kelas tugas menyediakan abstraksi yang lebih maju, menggunakan kolam benang untuk meningkatkan penggunaan sumber, 3) melaksanakan pengkomputeran selari melalui selari.foreach, 4) async/menunggu dan tugas.

Apakah peranan char dalam c strings Apakah peranan char dalam c strings Apr 03, 2025 pm 03:15 PM

Dalam C, jenis char digunakan dalam rentetan: 1. Simpan satu watak; 2. Gunakan array untuk mewakili rentetan dan berakhir dengan terminator null; 3. Beroperasi melalui fungsi operasi rentetan; 4. Baca atau output rentetan dari papan kekunci.

Cara Mengendalikan Watak Khas dalam Bahasa C Cara Mengendalikan Watak Khas dalam Bahasa C Apr 03, 2025 pm 03:18 PM

Dalam bahasa C, watak -watak khas diproses melalui urutan melarikan diri, seperti: \ n mewakili rehat garis. \ t bermaksud watak tab. Gunakan urutan melarikan diri atau pemalar watak untuk mewakili watak khas, seperti char c = '\ n'. Perhatikan bahawa backslash perlu melarikan diri dua kali. Platform dan penyusun yang berbeza mungkin mempunyai urutan melarikan diri yang berbeza, sila rujuk dokumentasi.

Cara menggunakan array char dalam bahasa c Cara menggunakan array char dalam bahasa c Apr 03, 2025 pm 03:24 PM

Arus char menyimpan urutan watak dalam bahasa C dan diisytiharkan sebagai array_name char [saiz]. Unsur akses diluluskan melalui pengendali subskrip, dan elemen berakhir dengan terminator null '\ 0', yang mewakili titik akhir rentetan. Bahasa C menyediakan pelbagai fungsi manipulasi rentetan, seperti strlen (), strcpy (), strcat () dan strcmp ().

Cara menukar char dalam bahasa c Cara menukar char dalam bahasa c Apr 03, 2025 pm 03:21 PM

Dalam bahasa C, penukaran jenis char boleh ditukar secara langsung kepada jenis lain dengan: Casting: Menggunakan aksara pemutus. Penukaran Jenis Automatik: Apabila satu jenis data dapat menampung jenis nilai lain, pengkompil secara automatik menukarkannya.

Elakkan kesilapan yang disebabkan secara lalai dalam penyataan suis C Elakkan kesilapan yang disebabkan secara lalai dalam penyataan suis C Apr 03, 2025 pm 03:45 PM

Strategi untuk mengelakkan kesilapan yang disebabkan oleh lalai dalam pernyataan suis C: Gunakan enums dan bukannya pemalar, mengehadkan nilai pernyataan kes kepada ahli yang sah dari enum. Gunakan kejatuhan dalam pernyataan kes terakhir untuk membiarkan program terus melaksanakan kod berikut. Untuk pernyataan suis tanpa kejatuhan, selalu tambahkan pernyataan lalai untuk pengendalian ralat atau memberikan tingkah laku lalai.

Apakah fungsi jumlah bahasa C? Apakah fungsi jumlah bahasa C? Apr 03, 2025 pm 02:21 PM

Tiada fungsi jumlah terbina dalam dalam bahasa C, jadi ia perlu ditulis sendiri. Jumlah boleh dicapai dengan melintasi unsur -unsur array dan terkumpul: Versi gelung: SUM dikira menggunakan panjang gelung dan panjang. Versi Pointer: Gunakan petunjuk untuk menunjuk kepada unsur-unsur array, dan penjumlahan yang cekap dicapai melalui penunjuk diri sendiri. Secara dinamik memperuntukkan versi Array: Perlawanan secara dinamik dan uruskan memori sendiri, memastikan memori yang diperuntukkan dibebaskan untuk mengelakkan kebocoran ingatan.

See all articles