1

我将给定短语中的每个单词与在提供的示例文本中找到的任何相应单词进行匹配。通过在每个实例中绘制贝塞尔曲线,我将给定短语中的单词与示例文本匹配。我的问题如下:将示例文本放入数组后,我不知道有一种好方法可以再次绘制文本,而不会在每个单词之间产生奇怪的间距。我目前正在从数组中提取每个单词,但事实证明效果不是很好。也许我的整个方法是不正确的......任何建议都非常感谢。这对我来说都是新的。谢谢!

String sampleText = "this is where my sample text goes";

String phrasePart1 = "this";
String phrasePart2 = "is";
String phrasePart3 = "text";

float x = 30;
float y = 70;

size(1000, 800);
background(#FFFFFF);
smooth();

String[] wordSet = split(sampleText, " ");

fill(0);

text(phrasePart1, width/2-30, 30);
text(phrasePart2, width/2+10, 30);
text(phrasePart3, width/2+30, 30);

for (int i = 0; i < wordSet.length; i++) {

  textSize(6);
  text(wordSet[i], x, y);


  if (wordSet[i].equals(phrasePart1)) {
    noFill();
    stroke(153);
    smooth();
    bezier(width/2-35, 27, 30, 30, 40, random(30, 200), x+5, y-9);
  }

    if (wordSet[i].equals(phrasePart2)) {
    noFill();
    stroke(153);
    smooth();
    bezier(width/2+13, 33, 670, 30, 680, random(30, 200), x+5, y-9);
    }

  if (wordSet[i].equals(phrasePart3)) {
    noFill();
    stroke(153);
    smooth();
    bezier(width/2+50, 27, 670, 30, 680, random(30, 200), x+5, y-9);
  }

  x = x + wordSet[i].length()*3+4;


  if (x > width-50) {
    x = 30;
    y = y + 12;
  }
}
4

1 回答 1

2

尝试更换

x = x + wordSet[i].length()*3+4;

在带有textWidth的 for 循环的底部

x = x + textWidth(wordSet[i] + " " );
于 2013-10-27T12:55:54.790 回答