⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fontdraw.cs

📁 Beginning C# Game Programming 的源代码
💻 CS
字号:
using System;
using System.Drawing;


namespace SpaceWar {
	class FontDraw {
		public static LetterVector[] GetLetter(char letter, float scale) {
			int index = FindLetter(letter);		

			if (index == -1)
				return null;

			int vectorStart = GetVectorStart(index);
			int vectorEnd = vectorStart + VectorFontData.vectorCount[index] * 4;

			int size = (vectorEnd - vectorStart) / 4;
			LetterVector[] vectors = new LetterVector[size];

			int ind = 0;
			for (int vector = vectorStart; vector < vectorEnd; vector += 4) {
				int x1 = (int) Math.Round(VectorFontData.Vectors[vector] * scale);
				int y1 = (int) Math.Round(-VectorFontData.Vectors[vector + 1] * scale);
				int x2 = (int) Math.Round(VectorFontData.Vectors[vector + 2] * scale);
				int y2 = (int) Math.Round(-VectorFontData.Vectors[vector + 3] * scale);
				vectors[ind] = new LetterVector(new Point(x1, y1), new Point(x2, y2));
				ind++;
			}

			return(vectors);
		}

		public static void DrawLetter(Graphics g, char letter, float x, float y, float scale) {
			int index = FindLetter(letter);		

			if (index == -1)
				return;

		
			int vectorStart = GetVectorStart(index);
			int vectorEnd = vectorStart + VectorFontData.vectorCount[index] * 4;


			Pen pen = new Pen(Brushes.Red, 1.0f);
			for (int vector = vectorStart; vector < vectorEnd; vector += 4) {
				float x1 = x + VectorFontData.Vectors[vector] * scale;
				float y1 = y - VectorFontData.Vectors[vector + 1] * scale;
				float x2 = x + VectorFontData.Vectors[vector + 2] * scale;
				float y2 = y - VectorFontData.Vectors[vector + 3] * scale;

				g.DrawLine(pen, x1, y1, x2, y2);

			}

		}	

		public static int FindLetter(char letter) {
			for (int index = 0; index < VectorFontData.order.Length; index++) {
				if (VectorFontData.order[index] == letter)
					return(index);
			}
			return(-1);

		}

		public static int GetVectorStart(int max) {
			int start = 0;

			for (int index = 0; index < max; index++) {
				start += VectorFontData.vectorCount[index] * 4;
			}
			return(start);
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -