Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在XNA中使用图像作为字体(SpriteFont?或其他什么?)_C#_Xna - Fatal编程技术网

C# 在XNA中使用图像作为字体(SpriteFont?或其他什么?)

C# 在XNA中使用图像作为字体(SpriteFont?或其他什么?),c#,xna,C#,Xna,因此,我已经进入了一个基于2D XNA的自上而下的黑客和斜杠项目的一部分,我需要在屏幕上绘制文本。我想使用的是我发现的一个精灵纸样式的图像,其中包含我将需要用于此项目的字符和符号 现在,在提问之前,我已经对此做了一些阅读,将“字体”或其他东西放到屏幕上的唯一两种方法是使用已经安装在计算机上的字体,或者,根据,我必须创建一个自定义内容处理器 我的问题是,如果我有一个图像(比如说PNG格式),上面有我想要的所有字母/字符,我如何在我的2D游戏中使用这些字母?而且它不一定是基于XNA的解决方案 提前感

因此,我已经进入了一个基于2D XNA的自上而下的黑客和斜杠项目的一部分,我需要在屏幕上绘制文本。我想使用的是我发现的一个精灵纸样式的图像,其中包含我将需要用于此项目的字符和符号

现在,在提问之前,我已经对此做了一些阅读,将“字体”或其他东西放到屏幕上的唯一两种方法是使用已经安装在计算机上的字体,或者,根据,我必须创建一个自定义内容处理器

我的问题是,如果我有一个图像(比如说PNG格式),上面有我想要的所有字母/字符,我如何在我的2D游戏中使用这些字母?而且它不一定是基于XNA的解决方案


提前感谢。

您可以像从雪碧表中绘制任何其他雪碧一样绘制雪碧

您可能已经知道,该方法有一些重载,可以采用表示sprite工作表中源的
矩形

您可以使用字典跟踪从字符到精灵矩形的关系

Dictionary<char, Rectangle> fontDict = new Dictionary<char,Rectangle>();
fontDict.Add('A', new Rectangle(/*params representing source of A*/);
Dictionary fontDict=new Dictionary();
添加('A',新矩形(/*参数表示A*/)的源;
你可以用for或foreach循环来表达你的意思

for(int i = 0; i<str.Count; i++)
{
    Rectangle spriterect = fontDict[str[i]];

    SpriteBach.Draw(/*params*/);
}

用于(int i=0;iThanks,Sam i是!最后一个解决方案让我非常感兴趣,因为我拥有类正常工作所需的所有东西。然而,阅读该类时说,精灵表上的任何黑色都是透明的。因为精灵表上的字符外观都被黑色包围,你能看到其中的任何东西吗FontTextureProcessor类关于允许黑色可见?因为您提供的第二个解决方案是我当前正在使用的,它使用了错误的字符来表示我尝试编写的内容。