如何在图片中的任何位置插入文本框,如在MS Paint中处理?

时间:2014-04-18 10:09:14

标签: text processing draw

我正在尝试创建一个程序,像MS Paint一样,我可以在图片或草图(处理中)的任何位置插入文本,并且能够编写任何所需的内容。在代码中编写文本很简单,但我的斗争是在草图中实际编写文本。

这是我的代码:

PFont f;
String textVar = "";

void setup() {
size(200,200);
f = createFont("Arial",16,true);
}

void draw() {
background(255);
textFont(f,16);                 
fill(0);
text (textVar, mouseX, mouseY);  
}

void keyPressed() {
if (key == BACKSPACE) {
if (textVar.length() > 0) {
  textVar = textVar.substring(0,textVar.length() - 1);
}
}
else if (textWidth(textVar+key) < width) {
textVar = textVar + key;
}
}

1 个答案:

答案 0 :(得分:0)

使用mousePressed()功能,您可以存储简单文字的位置

void mousePressed() {
  X = mouseX;
  Y = mouseY;
}

因此,您只需将text()参数更改为:

text (textVar, X, Y);

如果您想要更多不同的文本框位置,则需要使用集合。为此,请使用以下属性创建class textBox:positionX,positionY和text,您可以在其中存储所有importatnt信息。然后只需将其添加到集合中:

ArrayList<textBox> boxes = new ArrayList();

然后,您可以在mousePressed函数中添加计数器以创建textBox的新对象,并将其添加到boxes的集合中:

boxes.add( new textBox(mouseX, mouseY, textVar))

draw()函数中,您必须绘制所有框:

for (textBox b: boxes)   b.printB();

其中printB()是类textBox的方法,只需在所需位置绘制文本。