2012-04-17 86 views
2

我正在使用Processing API處理Java中的3D場景。這是一個強制導向的圖形佈局算法(儘管這不是太重要)。我已經完成了所有的圖形繪製 - 節點,邊緣,佈局等看起來不錯。雖然圖上的每個節點都有一個標籤,但我希望能夠將該標籤顯示爲該節點旁邊的文本。我已經嘗試使用text()函數,但到目前爲止,似乎我的代碼不起作用。我在場景的任何地方都看不到文字。在處理中繪製3D文本

我的代碼如下所示:

pushMatrix(); 
translate(width/2, height/2, 0); // put 0,0,0 at the center of the screen 
text("foo!", 20, 20, 20); 
popMatrix(); 

而且我看不到任何東西。只是圖表。那麼我錯過了什麼?

回答

0

一切都很好,你顯示的代碼的一小撮。你可以看到運行here修改後的版本:

void setup() { 
    size(400,400,P3D);  
    textSize(20); 
} 

void draw() { 
    background(0); 
    translate(width * .5, height*.5,0); 
    rotateY(map(mouseX,0,width,-PI,PI)); 
    rotateX(map(mouseY,0,height,-PI,PI)); 
    pushMatrix(); 
    text("foo!", -20, 0, 20); 
    popMatrix(); 
} 

有可能是沿途的東西。謹慎分享更多信息?

+0

原來我設定創建使用的createFont的字體()方法那根本不存在 - 我想,它默默無聞,沒有畫任何文字。謝謝! – Peter 2012-04-19 13:52:25

0

填充顏色控制文本顏色,默認爲白色。因此,如果您在白色背景上繪製白色文字,則不會顯示。添加填充(0);在繪製文字之前。

還請記住,將文字發送到屏幕後繪製的圖形可能會覆蓋文字。繪製中的最後一個「隱藏」語句是繪製屏幕。

下面是在頂部帶有標籤的行繪製一系列的垂直線(在2D)的例子:

int startX; 

    void setup() { 
     size(400,400); 
     textSize(12); 
     startX = width/10; 
    } 

    void draw() { 
     background(255); 
     int curX = startX; 
     fill(0);   // Set the text color 
     while (curX < width) 
     { 
     line(curX, 30, curX, height-10); 
     text(curX, curX-(curX/20), 20); 
     curX += width/10; 
     } 
    } // end draw