为了账号安全,请及时绑定邮箱和手机立即绑定

使图像指向Java中的特定位置

使图像指向Java中的特定位置

慕斯709654 2021-04-05 09:15:35
在您将其标记为重复之前我已经在互联网上进行了大量搜索,并尝试了每种解决方案,但是没有人以与我相同的方式来做。在我的情况下,轮换是一门精打细算的课程。我创建了一个继承JLabel类的Java类,在我的类中有一个BufferedImage使用该paintComponent(Graphics g)方法绘制的箭头。我试图使箭头指向特定的点(我是从另一种方法获得的),但是出了点问题,箭头旋转了错误的方向。我认为:由于imageLocation是相对于标签的,因此计算不正确。这是我的代码:package pkg1;import java.awt.*;import java.awt.event.*;import java.awt.image.*;import java.io.*;import javax.imageio.*;import javax.swing.*;public final class ImageLabel extends JLabel {   private float angle = 0.0f; // in radians   private Point imageLocation = new Point();   private File imageFile = null;   private Dimension imageSize = new Dimension(50, 50);   private BufferedImage bi;   private BufferedImage resizeImage(BufferedImage originalImage, int img_width, int img_height) {      int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();      BufferedImage resizedImage = new BufferedImage(img_width, img_height, type);      Graphics2D g = resizedImage.createGraphics();      g.drawImage(originalImage, 0, 0, img_width, img_height, null);      g.dispose();      return resizedImage;   }   @Override   public void paintComponent(Graphics g) {      super.paintComponent(g);      if (bi == null) {         return;      }      imageLocation = new Point(getWidth() / 2 - bi.getWidth() / 2, getHeight() / 2 - bi.getHeight() / 2);      Graphics2D g2 = (Graphics2D) g;      g2.rotate(angle, imageLocation.x + bi.getWidth() / 2, imageLocation.y + bi.getHeight() / 2);      g2.drawImage(bi, imageLocation.x, imageLocation.y, null);   }   public void rotateImage(float angle) { // rotate the image to specific angle      this.angle = (float) Math.toRadians(angle);      repaint();   }   public void pointImageToPoint(Point target) {      calculateAngle(target);      repaint();   }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信