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

Ну, я уже нашел решение. Вам нужно отобразить (нарисовать) текст (всплывающую подсказку) только после отображения каждого другого изображения/объекта (рисования). Это заставит текст всегда оставаться на остановке и четко отображаться без проблем. Чтобы сделать это, Вы должны его в главном классе в методе вытягивания, как в этом экс:

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

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

     } 

    } 

Надежда другие люди считают это полезным.