2016-05-10 5 views
0

私はしばらくの間苦労しており、解決策を見つけることはできませんでした。私は、ユーザがPGraphicsオブジェクトの横に表示されている特定のマーカーの上にマウスを置いたときに、ツールチップ(テキストを含む色の異なる長方形のボックス)を表示しようとしています。これはjavaでプログラムされ、JavaアプレットとしてPAppletクラスを使用して実行されます。PGraphicsのテキスト(ツールチップ)の表示が画像の上に文字化けして表示されます

問題は、すべての画像が他の画像の上にとどまるわけではないため、テキストがはっきりと見えないことです。色は変更され、ツールチップの色に保存されますが、他のマーカーのエッジは依然として上にとどまります。ここ

は、コードの一部は、より良い私がやろうとしていますかを説明することです。

// Common piece of drawing method for markers; 
    // Note that you should implement this by making calls 
    // drawMarker and showTitle, which are abstract methods 
    // implemented in subclasses 
    public void draw(PGraphics pg, float x, float y) { 
     // For starter code just drawMaker(...) 
     if (!hidden) { 

      drawMarker(pg, x, y); 

      if (selected) { 
       showTitle(pg, x, y); // You will implement this in the subclasses 
      } 

     } 
    } 

@Override 
    public void drawMarker(PGraphics pg, float x, float y) { 
     // TODO Auto-generated method stub 
     pg.pushStyle(); 

     // IMPLEMENT: drawing triangle for each city 
     pg.fill(150, 30, 30); 
     pg.triangle(x, y-TRI_SIZE, x-TRI_SIZE, y+TRI_SIZE, x+TRI_SIZE, y+TRI_SIZE); 

     // Restore previous drawing style 
     pg.popStyle(); 
    } 

public void showTitle(PGraphics pg, float x, float y) 
    { 
     // TODO: Implement this method 
     pg.pushStyle(); 

     pg.fill(255, 255, 202); 
     pg.rect(x+TRI_SIZE+1, y-TRI_SIZE, 150, 15); 
     pg.textAlign(PConstants.LEFT, PConstants.CENTER); 
     pg.fill(0,0,0); 
     pg.text(getCity()+", " + getCountry() + ", " + getPopulation(), x+TRI_SIZE+2, y); 

     // Restore previous drawing style 
     pg.popStyle(); 
    } 

保証するために表示されないためにいくつかのマーカーまたは別の方法のエッジを削除することが可能であることを常にツールチップ上にとどまる?事前に感謝します

答えて

0

まあ、私はすでに解決策を見つけました。あなたがしなければならないのは、他のすべてのイメージ/オブジェクトが表示(描画)された後にのみ、テキスト(ツールチップ)を表示(描画)することです。これにより、テキストは常に停止して問題なく明瞭に表示されます。これを行うには、この例のように、drawメソッドでメインクラスでそれを持っている:

public void draw() { 
     background(0); 
     map.draw(); 
     addKey(); 

     if (lastSelected != null) 
     { 
      lastSelected.showToolTip(this,lastSelected.getScreenPosition(map).x,lastSelected.getScreenPosition(map).y); 

     } 

    } 

他の人々は、これが役に立つことを願っ。

関連する問題