Java 如何在绘画中使用graphics2D,或者有更好的方法吗?
我想使用graphics2D,但我无法让它显示我的图形。有没有更好的方法可以让我使用repaint()?最后,我想把一个图像设置为背景,并能在上面画画,然后将框架的内容保存为图像Java 如何在绘画中使用graphics2D,或者有更好的方法吗?,java,image,applet,graphics2d,Java,Image,Applet,Graphics2d,我想使用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 java
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 );
}
}
好吧,那么
public void paint()
这到底在干什么,哈哈?您需要一个图形对象public void paint(图形g)
类似于默认方法,在初始化小程序时会自动调用该方法Graphics2D g=img.createGraphics()代码>当您需要使用默认的Graphics g对象并将其强制转换为Graphics2D对象时,如soGraphics2D g2d=(Graphics2D)g代码>
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();
}
}
}
}
1) 如果不调用paint()
方法,请使用@Override符号进行检查。2) “然后将框架内容保存为图像”a)它不是框架,而是小程序。b) 默认情况下,小程序无法保存文件。3) 小程序的开发和调试要比应用程序复杂得多,我建议您暂时不要使用它们。4) 为什么在第二次最后一次也是最后一次结账之前的15个空行是}?