2013-10-27 6 views
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; 
    } 
} 
+0

textWidth 당신이 사용하고있는 그래픽 API와 루프에 대한 당신의 하단에

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

를 교체 시도? –

+1

어떤 언어입니까? 이 자바인가? 나는이 줄을 제외하고 자바처럼 보입니다 :'background (#FFFFFF);' – jrd1

+1

"Processing"은 언어입니다. 나는 그것을 좋아하지만 꽤 혼란스러운 이름을 가지고있다 ... – kevinsa5

답변

2

x = x + textWidth(wordSet[i] + " ");