在Java Swing面板中,我绘制了一个具有任意变换的图像,例如:
public void paintComponent(Graphics g){
AffineTransform transform = AffineTransform.getTranslateInstance(x, y);
AffineTransform rotateInstance AffineTransform.getRotateInstance(rotX, rotY);
transform.concatenate(rotateInstance);
g.setTransform(transform);
g.drawImage(image, 0, 0 , null);
}
在这样的图像上检测鼠标的最佳方法是什么?
更好:仅在非透明像素上检测鼠标的最佳方法是什么?
答案 0 :(得分:1)
构建一个封闭图片的Shape
,并使用AffineTransform
方法createTransformedShape()
将Shape
与图片一起旋转。 Shape
方法contains()
将允许在Component
相对坐标中进行位置测试。完整示例见here和here。引用了两种反向坐标变换的方法here。