gpt4 book ai didi

java - 如何在绘画中使用graphics2D或者有更好的方法来做到这一点?

转载 作者:行者123 更新时间:2023-11-30 04:49:35 25 4
gpt4 key购买 nike

我想使用graphics2D,但我无法让它显示我的图形。有没有更好的方法可以让我使用 repaint() 来解决这个问题?最终我想将图像设置为背景并能够在其上绘图,然后将框架的内容保存为图像。

import java.awt.image.*;
import javax.imageio.ImageIO;
import javax.swing.*;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.swing.JApplet;
import java.awt.*;

// assume that the drawing area is 150 by 150
public class test extends JApplet
{
final int radius = 25;
int width = 200, height = 200;

BufferedImage img = new BufferedImage(
width, height, BufferedImage.TYPE_INT_ARGB);

public void paint ( )
{
Graphics2D g = img.createGraphics();
g.setColor( Color.orange );
g.fillRect( 0, 0, 150, 150 );
g.setColor( Color.black );

g.drawOval( (150/2 - radius), (150/2 - radius), radius*2, radius*2 );
}
}

最佳答案

好的,

  1. 你有public void Paint( )这到底在做什么哈哈?您需要一个图形对象。 public void Paint(Graphics g) 就像默认方法一样,在初始化小程序时会自动调用它。

  2. 当您需要使用默认的 Graphics g 对象并将其转换为 Graphics2D 对象时,您可以使用 Graphics2D g = img.createGraphics(); Graphics2D g2d = ( Graphics2D) g;

  3. 您还应该搜索更多有关双缓冲的信息:)

无论如何...这段代码可以工作,所以可以从中获取你想要的:)

P.S 请注意我是如何实现 Runnable 的;如果您只想使用 Graphics2D 代码,则无需执行此操作。它只是使类成为一个线程并用于游戏帧速率:)

希望这有帮助。

import java.applet.*;
import java.awt.*;


public class Test extends Applet implements Runnable{

public boolean isRunning = false;
public int radius = 25;


public void start() {
isRunning = true;
new Thread(this).start();
}

public void stop() {
isRunning = false;
}

public void paint(Graphics g) {
//Create Graphics2D object, cast g as a Graphics2D
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.ORANGE);
g2d.fillRect(0, 0, 150, 150);

g2d.setColor(Color.BLACK);
g2d.drawOval((150/2 - radius), (150/2 - radius), radius * 2, radius * 2);
}

public void run() {

while (isRunning) {
repaint();
try {
Thread.sleep(17);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


}

关于java - 如何在绘画中使用graphics2D或者有更好的方法来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com