2016-03-03 1 views
1

J'ai une application simple écrite avec SWT. Je reçois GC de SWT.Paint événement. Dans ma toile principale, j'ai ajouté un écouteur MouseMove donc du texte sera affiché sur la zone spécifiée si la souris est dans la zone.Changer le contexte graphique dans l'application SWT

Je voudrais supprimer le texte de GC après que la souris ne soit plus sur la zone. Je n'ai trouvé aucune mention sur la suppression des objets dessinés du GC ou le remplacement du GC par un nouveau.

Pourriez-vous me dire comment puis-je obtenir un tel résultat? Il n'y a pas d'autre accès à l'objet GC qu'à l'événement SWT.Paint.

Répondre

2

Les éléments tels que le texte des lignes tracées sur un CPG ne peuvent pas être supprimés. Même si, un GC a des méthodes pour dessiner du texte et des lignes, etc, ces méthodes ne font que transformer les formes en pixels et c'est tout ce que le GC connaît.

Par conséquent, votre application doit conserver un modèle qui permet de positionner le texte et de supprimer les éléments de texte placés une fois. Chaque fois que le modèle change, le canevas doit être actualisé avec canvas.redraw() qui envoie un événement SWT.Paint. Votre auditeur de peinture peut ensuite examiner le modèle et peindre le texte en conséquence.

L'article Graphics Context - Quick on the draw a plus de détails sur le contexte graphique SWT.

-1

Ajouter MouseTrackListener et la souris de contrôle entrent et sortent toile

MouseTrackListener mtl = new MouseTrackAdapter() { 
    @Override 
    public void mouseEnter(MouseEvent e) { 
     // add your PaintListener here 
    } 

    @Override 
    public void mouseExit(MouseEvent e) { 
    // remove PaintListener here  
    } 
}; 
canvas.addMouseTrackListener(mtl)