2016-06-30 2 views
1

Ich habe ein Rechteck, und habe es durch Skalierung und Drehung an eine neue Position auf dem Bildschirm übersetzt. Was ich möchte, ist in der Lage zu erkennen, wenn der Mauszeiger über dieses Objekt auf dem Bildschirm schwebt. Und nicht seine ursprüngliche, nicht übersetzte Form. Ich habe runnable Code zur Verfügung gestellt mein Problem unten angezeigtWie zu sehen, wenn Mauszeiger über ein Java-Grafik2D übersetztes Objekt schwebt

import java.awt.*; 
import java.awt.event.*; 
import java.awt.geom.Path2D; 
import java.util.*; 
import javax.swing.*; 
import javax.swing.Timer; 

public class Main extends JPanel { 

    static int WIDTH; 
    static int HEIGHT; 

    public Main(){ 
    } 

    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     Graphics2D g2d = (Graphics2D) g; 
     g2d.setColor(Color.RED); 
     g2d.fillRect(WIDTH/2, HEIGHT/2, 100, 100); 
     g2d.rotate(Math.toRadians(45),WIDTH/2,HEIGHT/2); 
     g2d.scale(0.5, 0.5); 
     g2d.setColor(Color.BLUE); 
     g2d.fillRect(WIDTH/2, HEIGHT/2, 100, 100); 

    } 
    public static void main(String[] args){ 
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
     WIDTH = (int) screenSize.getWidth(); 
     HEIGHT = (int) screenSize.getHeight(); 
     Main main = new Main(); 
     JFrame frame = new JFrame(); 
     frame.setTitle("360 ATTACK"); 
     frame.setSize(WIDTH, HEIGHT); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(main); 
     frame.setVisible(true); 
    } 
} 

So, erneut auf, ich möchte wissen, wenn der Mauszeiger über die blaue Form schwebt. Nicht die rote Form.

Dank

Antwort

1

Sie können Area und Area.contains (x, y) verwenden;

Rectangle r = ...; 
Area a = new Area(r); 
a.transform(AffineTransform.rotate(Math.PI/2)); 
if (a.contains(event.getX(), event.getY()) { 
    ... 
} 

Ich empfehle die Verfolgung des Gebiets in einer Instanzvariable, so dass Sie es in der Mouse zugreifen können

Auch dieser Bereich Paket sehen - alles, was mit ‚Area‘ beginnt hier: https://sourceforge.net/p/tus/code/HEAD/tree/tjacobs/ui/shape

+0

Genial. Arbeitete perfekt. Vielen Dank – Colourfit

Verwandte Themen