gpt4 book ai didi

c# - 在 GUI 上打印到屏幕

转载 作者:行者123 更新时间:2023-11-30 16:21:15 24 4
gpt4 key购买 nike

我对编程非常陌生,尤其是创建 GUI;我以前只用 C# 编写控制台程序,现在正尝试使用 XNA 构建游戏。谁能告诉我如何在 GUI 中打印到屏幕来帮助我?我目前正在尝试 System.Console.WriteLine(""); 的变体,但不会打印到屏幕。我正在使用的代码如下。谁能告诉我哪里出错了?

ResourceCounter.cs:

      public ResourceCounter(Vector2 pos, GameTime gameTime)`
{
position = pos;
over = false;
clicked = false;
gameTime = new GameTime();`

currentTime += (float)gameTime.ElapsedGameTime.TotalSeconds;
System.Console.WriteLine("Resources: ", pSourceCount);

if (currentTime >= countDuration)
{
pSourceCount++;
**System.Console.WriteLine("Resources: ", pSourceCount);**
}
if (pSourceCount >= limit)
{
pSourceCount = 0;//Reset the counter;

}


}

在我的主要 GameScreen.cs 类中:

    public override void Update(GameTime gameTime)
{
MouseState mState = Mouse.GetState();
menu.Update(mState, cursor, gameTime);

if (menu.currentstate == State.campaign)
{
campaign.Update(pTower);
//campaign.Update(eTower);
**System.Console.WriteLine("Resources: ", pSourceCount);**
}
base.Update(gameTime);
}

最佳答案

使用 SpriteBatch.DrawString使用 XNA 呈现文本的方法。

当您使用 System.Console.WriteLine 打印文本时,它被写入标准输出流。此流中的数据随后通过控制台呈现。您的游戏窗口根本不会注意到这一点。


文本渲染

公平地说,您在游戏窗口中绘制的所有内容都由(带纹理的)三角形组成。文字也不异常(exception)。使用四边形(矩形)渲染单个字符,该四边形同样由 2 个三角形组成。

文本 XNA! 将使用总共 4 个 sprite(8 个三角形)绘制,每个字符一个 sprite:

text rendered in "Fill" and "Wireframe" mode

位图字体

常见的字体格式将字符存储为矢量。对于 bitmap fonts (游戏中通常使用的那种字体)实际字体存储在一个或多个位图(纹理)中。这种方法要快得多,因为字符形状本身已经光栅化并且只需要从纹理中采样。明显的缺点是,字符都是固定大小。您需要一种位图字体、每种字体、每种大小、每种字重。

这是 Arial 字体的 sprite 贴图,大小为 20,标准粗细:

为了绘制某个字符,渲染器必须知道该字符在位图上的位置。正如您在上图中看到的,每个字符占据一个不重叠的矩形区域。这些矩形的尺寸可以存储在附加文本或 XML 文件中。

例如,这可能是上面 Sprite 图的 A 字符的定义:

<char id="65" x="235" y="47" width="12" height="13" xoffset="0" yoffset="3" xadvance="11" page="0" />
  • id为ASCII值(A=65)
  • xy 是左上角的位置
  • widthheight 是矩形的大小
  • xoffsetyoffset 是屏幕上的偏移量
  • xadvance是到前一个字符的距离
  • page 是包含字符的位图索引

结论

游戏的文本渲染并不像人们想象的那么简单。 XNA 极大地使用 SpriteBatch 类简​​化了该过程。所涉及步骤的摘要:

  • 将标准字体转换为位图字体
  • 在您的游戏应用程序中加载字体文件
  • 为给定的字符串创建 Sprite
  • 将 Sprite 渲染到屏幕上

字体示例是使用免费的 Bitmap Font Generator 创建的.

关于c# - 在 GUI 上打印到屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13415980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com