我需要能够单独旋转图像(在java中).到目前为止我唯一发现的是g2d.drawImage(image,affinetransform,ImageObserver).不幸的是,我需要在特定的点绘制图像,并且没有一个方法可以分别对图像进行旋转,并且2.允许我设置x和y.任何帮助表示赞赏
我到处搜寻,我找不到答案.
如何在java中旋转Rectangle?
这是我的一些代码:
package net.chrypthic.Space;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Space extends JPanel implements ActionListener{
Timer time;
public Space()
{
setVisible(true);
setFocusable(true);
addMouseMotionListener(new ML());
addMouseListener(new ML());
addKeyListener(new AL());
time=new Timer(5, this);
time.start();
}
public void paint(Graphics g)
{
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.WHITE);
Rectangle rect2 = new Rectangle(100, 100, 20, 20);
g2d.draw(rect2);
g2d.fill(rect2);
}
public void actionPerformed(ActionEvent ae) {
repaint();
}
public class AL extends KeyAdapter
{
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent …Run Code Online (Sandbox Code Playgroud) 我想知道是否有可能实现一个方形但旋转90度的GUI面板(可能是JPanel).显然,将有一个包含该面板的顶层容器,并且在视觉上主面板是这个旋转的方形面板.
更具体地说,我将一个面板(称为"A")划分为4个相等的方形子面板,并用JLabel填充这些子面板,我正在考虑使用GridLayout.最后,我会将"A"旋转90度以达到我想要的效果.
从我对其他类似问题的阅读中,您似乎无法旋转JPanel本身,但您可以旋转其中包含的内容.这适用于我的情况吗?如果有人可以指出,将不胜感激.谢谢.
有人可以教我如何使用swing timer以下目的:
当我点击鼠标时,我需要有一个开始动画的多边形(简单的动画,如旋转); 当我再次点击时停止动画.
我没有理解MouseListener工作方式的问题,而是用实际的动画.我尝试在paint()方法中使用while块模拟动画,我将绘制,擦除和重绘多边形(例如模拟旋转),但在while内部,applet不会听取点击.它会在一段时间之后才会收听.当我点击鼠标时,我需要摆动计时器才能打破.
我试图在JPanel中绘制一个矩形,它可以平移,然后自行旋转以模仿汽车的运动.我已经能够使矩形平移和旋转,但它围绕(0,0)的原点旋转.我非常高兴能够让矩形移动和旋转,因为我是Java GUI的新手,但我似乎无法得到如何使矩形围绕自身旋转,因为我尝试了更多它,当我初始化矩形并将其旋转45度,它的位置发生了变化,我假设是旋转方法附加的变换矩阵.
我通过网站查看了如何解决这个问题,但是我只找到了如何旋转矩形而不是如何旋转和移动模拟汽车的运动.我认为它关注它的变换矩阵,但我只是在猜测.所以我的问题是如何让矩形能够旋转并在自身周围移动而不是JPanel中的一个点.
这是我到目前为止提出的代码:
public class Draw extends JPanel implements ActionListener {
private int x = 100;
private int y = 100;
private double theta = Math.PI;
Rectangle rec = new Rectangle(x,y,25,25);
Timer timer = new Timer(25,this);
Draw(){
setBackground(Color.black);
timer.start();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.white);
rec.x = 100;
rec.y = 100;
g2d.rotate(theta);
g2d.draw(rec);
g2d.fill(rec);
}
public void actionPerformed(ActionEvent e) {
x = (int) (x + (Math.cos(theta))*1);
y = (int) (y + (Math.sin(theta))*1);
theta = …Run Code Online (Sandbox Code Playgroud) 我最近看到这个问题,就如何在Java中旋转图像。我直接从该答案中复制/粘贴了它。在实现时,似乎只旋转正方形的图像(即具有相同的大小,宽度和高度)。当我尝试将其用于非正方形图像时,如果可以的话,似乎会切断将其变成矩形的部分。像这样

我该如何解决/解决这个问题?
编辑:我正在使用的代码。另外,我不会有滚动条,因为这将是“游戏”,也不会一直处于全屏状态。
public class Player extends Entity { //Entity has basic values such as (float) x & y values, along with some getters and setters
double theta;
Reticle reticle; //draws a reticle where the cursor was(basically just replaces java.awt.Cursor due to something not neccessary for me to get into)
Sprite currentImage; //basically just a BufferedImage that you can apply aspect ratios to
//constructor
@Override
public void tick() {
//(this line) gets the Reticle from the main-method class …Run Code Online (Sandbox Code Playgroud) 我有一个带有x和y轴的2d图,我试图围绕轴旋转一个形状(一系列点).此旋转需要包括缩放功能.
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import javax.swing.*;
import java.lang.reflect.Array;
public class test extends JPanel implements ActionListener {
int[] p1x = {200, 200, 240, 240, 220, 220, 200};
int[] p1y = {200, 260, 260, 240, 240, 200, 200};
int[] p2x = {600, 600, 620, 620, 640, 640, 660, 660, 600};
int[] p2y = {400, 420, 420, 460, 460, 420, 420, 400, 400};
int[] p3x = {400, 400, 460, 460, 440, 440, 420, 420, 400};
int[] p3y = …Run Code Online (Sandbox Code Playgroud) 我无法将图像向右旋转90度。我需要能够在Java中分别旋转图像。唯一的事情。不幸的是,我需要在特定点绘制图像,并且没有一种方法带有参数1.分别旋转图像和2.允许我设置x和y。任何帮助表示赞赏
public class Tumbler extends GraphicsProgram{
public void run() {
setSize(1000,1000);
GImage original = new GImage("sunset.jpg");
add(original, 10, 10);
int[][] pixels = original.getPixelArray();
int height = pixels.length;
int width = pixels[0].length;
// Your code starts here
int newheight = width;
int newwidth = height;
int[][] newpixels = new int[newheight][newwidth];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
newpixels[j][height-1-i] = pixels[i][j];
}
}
GImage image = new GImage(newpixels);
add(image, …Run Code Online (Sandbox Code Playgroud) 我一直在尝试围绕指定的中心点旋转多边形,但我尝试过的所有东西都失败了.我用谷歌搜索过,发现很多,但没有一个似乎工作.
我试图复制的结果与第一个答案类似
不同之处在于我需要多边形实际旋转,只是以一定角度绘制它不会切割它.(这是简单的物理建模)
这是我的代码,我尝试过几种不同的方法
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;
public class rotationPanel extends JPanel {
private static final int SIZE = 500;
private static final Shape outline = makeShape();
Point p;
Point p2;
Point p3;
Point p4;
Point[] points;
Point[] npoints;
Point center;
Polygon poly;
double angle;
Timer timer;
long start;
long sleepTime;
static int runTime;
public rotationPanel(){
setSize(500,500);
setBackground(Color.DARK_GRAY);
setVisible(true);
runTime = 100; //ms
start …Run Code Online (Sandbox Code Playgroud) 我正在尝试旋转BufferedImage并在一个内部显示它(在a JLabel里面JPanel).当前结果产生一个相对于黑色背景旋转10度的白色正方形,但图像不在正方形内.我知道myPicture不是空白,因为myPicture它本身JPanel在未旋转时正确显示.
这是代码:
int w = myPicture.getWidth();
int h = myPicture.getHeight();
BufferedImage newImage = new BufferedImage(w, h, myPicture.getType());
Graphics2D graphic = newImage.createGraphics();
graphic.rotate(Math.toRadians(10), w/2, h/2);
graphic.drawImage(myPicture, null, 0, 0);
picLabel.setIcon(new ImageIcon(newImage));
Run Code Online (Sandbox Code Playgroud)