input - 如何为 monogame metro 应用程序创建输入文本框

标签 input textbox xna monogame

基于这个线程:

Adding inputbox-like control to XNA game

不确定这是否是一个 ressurect,但我的 monogame 项目需要一个输入文本框,但是我

运行 Metro 应用程序版本,关于如何解决这个问题的任何线索?我一直在尝试构建

我自己的图形用户界面,但我不知道如何限制文本框图像末尾的文本范围

宽度,也不知道如何将当前文本索引移动到左边的较早点

箭头或更远的右箭头键盘键,任何人都可以帮助我解决这个问题吗?

在此先感谢您的帮助! 亲切的问候, 罗慕洛·罗梅罗

最佳答案

我假设您想要一个单行文本框 - 这比多行文本框容易得多,因为您不需要自动换行 - 并且您已经确定了键和字符输入。

我没有用过 monogame,但不久前我为 xna 制作了一个输入框,所以我希望这对你有所帮助。

您要做的是定义一个背景矩形(也可以是图像),并记住文本光标(也称为工字指针)的位置。这是光标所在文本的哪个字符之后,以及您将输入新输入字符的位置。所以现在在代码中,这里是您的文本框类中需要的变量(假设您将为此使用一个类,这将是最简单的):

string text = ""; //Start with no text
int cursorPos = 0;
//These are set in the constructor:
SpriteFont font;
Rectangle backRect;

现在您可以开始处理字符输入了。每当输入字符时,您都希望将其插入光标位置。但是您还想检查新文本是否不超过背面矩形的宽度,因此代码如下所示:

public void CharEntered(char c)
{
    string newText = text.Insert(cursorPos, c.ToString()) //Insert the char

    //Check if the text width is shorter than the back rectangle
    if (font.MeasureString(newText).X < backRect.Width)
    {
        text = newText; //Set the text
        cursorPos++; //Move the text cursor
    }
}

您现在要做的就是处理键输入,并在按下左右箭头键时更改 cursorPos。并绘制文本等,但这些东西非常简单;)

希望这对您有所帮助! ~卢卡

关于input - 如何为 monogame metro 应用程序创建输入文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305631/

相关文章:

jquery - 替换同一文本中的多个输入值

input - React — 内联 onfocus 占位符 = ''

c# - 如何防止在非零数字之前输入零?

Java 读取和写入标准流不工作

php - 检查用户输入和防止mysql注入(inject)的方法有哪些?

vb.net - VB.NET 和 Windows 窗体中的文本框验证

html - 从表 td 继承的文本框宽度

c# - 以特定宽度移动的量

visual-studio-2010 - VS2010 Express 中的 XNA Game Studio 4.0 安装问题

c# - 如何在另一个类(class)中使用一个类(class)的公共(public) boolean ? C#