标签: java-2d

AffineTransform()以非常快的速度旋转矩形

我试图用java awt绘制一个矩形,并通过鼠标拖动使其与鼠标光标一起旋转.

当我测试它时,矩形旋转速度非常快.

我的矩形():

private Rectangle2D rec = new Rectangle2D.Float(x0,y0,w,h);
AffineTransform recTrans = new AffineTransform();
int pivotX = x0+w/2, pivotY = y0+h;
// (0,0) is at the top-left corner
Run Code Online (Sandbox Code Playgroud)

我的paintComponent():

 public void paintComponent(Graphics g) {
    Graphics2D graph = (Graphics2D) g;
            graph.translate(x,y);
            graph.transform(recTrans);
            graph.fill(rec);
            graph.setColor(Color.blue);
            graph.draw(rec);
}
Run Code Online (Sandbox Code Playgroud)

我的鼠标拖动事件:

 addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
            previousX = e.getX();
            previousY = e.getY();
        }
    });
 addMouseMotionListener(new MouseMotionAdapter() {
    public void mouseDragged(MouseEvent e) {
        currentX = e.getX();
        currentY = e.getY();

        double angle1 = …
Run Code Online (Sandbox Code Playgroud)

java swing awt java-2d affinetransform

0
推荐指数
1
解决办法
1361
查看次数

在JPanel上使用图形

我正在尝试使用以下代码将一个矩形绘制到JPanel:

JPanel background = new JPanel();
Graphics2D g = null;
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.BLACK);
g2d.drawRect(0, 0, 800, 600);
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我得到了错误

设置颜色行上的java.lang.NullPointerException.

我也试过这个,但我得到了同样的错误

JPanel background = new JPanel();
Graphics bg = background.getGraphics();
bg.setColor(Color.BLACK);
bg.drawRect(0, 0, 800, 600);
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我修复这个bug吗?

java swing java-2d nullpointerexception jpanel

0
推荐指数
1
解决办法
240
查看次数

改变绘制椭圆的颜色

我创建了一个名为"City"的对象

    City city = new City (name, rec, g);
Run Code Online (Sandbox Code Playgroud)

对象的构造函数如下所示:

    public City (String name, Rectangle r, Graphics g){
    this.name = name; 
    this.r = r;
    this.g = g; 
    }
Run Code Online (Sandbox Code Playgroud)

通过创建此对象,我还在上传的图片上绘制一个椭圆,并将其颜色设置为蓝色.这是我绘制对象的方式:

    g = (Graphics2D) window.lblNewLabel.getGraphics();
        g.setColor(Color.BLUE);
        g.fillOval(mouseX, mouseY, 15, 15);
Run Code Online (Sandbox Code Playgroud)

我希望以后能够在点击椭圆形本身后改变颜色.我尝试调用此函数,但它不起作用:

        public void isClicked(){
    clicked = true;
    this.color = Color.RED;
    this.g.setColor(Color.PINK);

}
Run Code Online (Sandbox Code Playgroud)

如何更改现有对象的颜色?

java swing awt object java-2d

0
推荐指数
1
解决办法
2万
查看次数

吃豆子打开/关闭嘴动画

我想用最简单的方法制作pacman开/关嘴动画.这是我最近的代码:问题是,什么都没发生?

package ordner;

import java.awt.Color;
import java.awt.Graphics;


import javax.swing.JFrame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class PacMan implements ActionListener {

private JFrame frame;
private DrawPanel panel;

private void initGui() {

frame = new JFrame("Pacman");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel = new DrawPanel();
frame.add(panel);
panel.setBackground(Color.BLACK);
frame.setSize(300, 300);
frame.setVisible(true);
}

 public static void main(String[] args) {
  PacMan pm = new PacMan();
  pm.initGui();
}

 @Override 
  public void actionPerformed(ActionEvent e) {
  panel.repaint();  
   }

 }
Run Code Online (Sandbox Code Playgroud)

这是我的画板:

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;


 public class DrawPanel extends JPanel …
Run Code Online (Sandbox Code Playgroud)

java swing awt java-2d

-1
推荐指数
1
解决办法
5069
查看次数

旋转球失去锋利和颜色

 package testIDE;

import java.awt.BorderLayout;
import java.awt.Graphics2D;
import java.awt.GridBagLayout;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import Utils.MyJFrame;

public class ExampleClass {

    public static void main(String[] args) {
        JFrame ballRotate = new BallRotate();
    }
}

class BallRotate extends MyJFrame {

    ArrayList<Integer> degree = new ArrayList<Integer>();
    BufferedImage backGroundImage = getBufferedImage("testIDE/buttonDefaultImage.jpg");
    JLabel backGroundLabel = new JLabel(new ImageIcon(backGroundImage));
    BufferedImage footballImage = getBufferedImage("testIDE/Tennis_Ball.png");
    int x = 0;

    public BallRotate() {

        footballImage=getScaledImage(250, 250, footballImage);
        BufferedImage rotatedImage = footballImage;

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); …
Run Code Online (Sandbox Code Playgroud)

java swing image java-2d

-1
推荐指数
1
解决办法
586
查看次数

图像调整大小UpScale丢失了质量

我想尝试最多3倍的比例图像.

例如,

原始图像

放大图像

调整大小的图像

我正在使用此进行图像大小调整.

以下代码剪切了诀窍,

public static BufferedImage getScaledSampledImage(BufferedImage img,
            int targetWidth, int targetHeight, boolean higherQuality) {

        ResampleOp resampleOp = new ResampleOp(targetWidth, targetHeight);
        resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.Normal);
        BufferedImage rescaledImage = resampleOp.filter(img, null);

        return rescaledImage;
    }
Run Code Online (Sandbox Code Playgroud)

您可以看到调整后的图像质量较低.我希望我可以将图像缩放至少3倍于原始图像,而不会丢失质量.

是Pposible吗?我是否需要更改现有的库?

谢谢

java image image-processing java-2d

-2
推荐指数
1
解决办法
642
查看次数

JAVA GAME循环?

我的java游戏有问题.我是初学者,但我必须把它写成一个学校项目.
游戏被称为"生日蛋糕",蛋糕上有7个蜡烛,其中一个正在显示为30秒,在这段时间你必须点击它才能得到点,如果你在这段时间没有点击它下一支蜡烛将显示.10个蜡烛显示游戏结束.
我做了循环,我试图使它工作太久,我沮丧
我的for循环工作,但它是如此之快,我使用Thread.sleep(1000),我尝试了很多解决方案,它看起来不错.但是,当我开始游戏时,没有任何事情发生,几秒钟后,所有7支蜡烛显示并迅速消失.我想我做错了什么,但我不知道是什么.

   if(Dane.start){

        int liczbaLosowa = 0;

        for(int i=0; i<10 ;i++){
            liczbaLosowa = (int)(Math.random()*7);

            this.wspX= wspX_p[liczbaLosowa];
            this.wspY= wspY_p[liczbaLosowa];
            g2d.drawImage(plomienImg, wspX, wspY,null);
            Toolkit.getDefaultToolkit().sync();
            try {
                Thread.sleep(1000);     
            } catch (Exception ex) { }
            //repaint();
        }
        Dane.start=false;

        }
Run Code Online (Sandbox Code Playgroud)

java swing loops image java-2d

-5
推荐指数
1
解决办法
776
查看次数