[英]How to see if mouse cursor is hovering over a java graphics2D translated object
我有一個矩形,並通過縮放和旋轉將它轉換到屏幕上的新位置。 我想要的是能夠檢測鼠標光標何時懸停在屏幕上的此對象上。 而不是其原始的非翻譯形式。 我提供了可運行的代碼來在下面顯示我的問題
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);
}
}
所以再次重申,我想知道鼠標光標何時懸停在藍色形狀上。 不是紅色的形狀。
謝謝
您可以使用Area
和 Area.contains(x,y);
Rectangle r = ...;
Area a = new Area(r);
a.transform(AffineTransform.rotate(Math.PI/2));
if (a.contains(event.getX(), event.getY()) {
...
}
我建議在實例變量中跟蹤區域,以便您可以在 MouseMotionListener 中訪問它
另請參閱此區域包 - 此處以“區域”開頭的所有內容: https : //sourceforge.net/p/tus/code/HEAD/tree/tjacobs/ui/shape
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.