2016-05-10 2 views
0

Ich habe mit diesem eine Weile gekämpft und habe keine Lösung gefunden. Ich versuche, eine QuickInfo (eine rechteckige Box mit anderer Farbe, die etwas Text enthält) anzuzeigen, wenn der Benutzer die Maus über bestimmte Markierungen bewegt, die auf der Seite eines PGraphics-Objekts angezeigt werden. Es ist in Java programmiert und wird mit der PApplet-Klasse als Java-Applet ausgeführt.PGraphics Text (Tooltip) Display erscheint verzerrt über Bilder

Das Problem ist, dass Text nicht klar zu sehen ist, da nicht alles davon über anderen Bildern bleibt. Obwohl die Farbe geändert und in der Farbe des Tooltips beibehalten wird, bleiben die Ränder anderer Markierungen weiterhin oben.

hier ist Teil des Codes besser zu erklären, was ich zu tun versucht:

// 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(); 
    } 

Ist es möglich, die Ränder einiger Markierungen zu entfernen, nicht angezeigt oder eine andere Art und Weise werden, um sicherzustellen, dass der Tooltip immer bleibt oben? Vielen Dank im Voraus

Antwort

0

Nun, ich habe bereits eine Lösung gefunden. Sie müssen den Text (Tooltip) nur anzeigen (zeichnen), nachdem alle anderen Bilder/Objekte angezeigt (gezeichnet) wurden. Dadurch bleibt der Text immer stehen und erscheint ohne Probleme klar. Um dies zu tun, Sie müssen es in der Hauptklasse in dem Draw-Verfahren, wie in diesem Beispiel:

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

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

     } 

    } 

Hoffnung andere Menschen dies nützlich finden.

Verwandte Themen