📄 canvas3d.java
字号:
package myprojects.graph3dapp;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.util.*;
public class Canvas3D extends JComponent implements MouseListener, MouseMotionListener {
protected BufferedImage image = null; // 需要显示的图像
protected Camera camera;
protected Light light;
protected Color atmosphereColor = new Color(50, 50 ,50); //环境光颜色
protected LinkedList objectList = new LinkedList();
protected Render3D render;
public Canvas3D(BufferedImage image) {
setImage(image);
addMouseListener(this);
addMouseMotionListener(this);
camera = new Camera();
render = new Render3D(this);
light = new Light();
}
public void setImage(BufferedImage image) {
this.image = image;
setSize(getPreferredSize());
}
public BufferedImage getImage() {
return image;
}
public void setCamera(Camera camera) {
this.camera = camera;
}
public Camera getCamera() {
return camera;
}
public void setLight(Light light) {
this.light = light;
}
public Light getLight() {
return light;
}
public void refresh() {
render.compile();
}
/** 获取需要显示图像缩放后的尺寸*/
protected Dimension getImageSize() {
if(image != null) {
return new Dimension(image.getWidth(), image.getHeight());
}
else return new Dimension(0, 0);
}
/** 获取控件首选尺寸,由于没有边框,它等于getImageSize()*/
public Dimension getPreferredSize() {
return getImageSize();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension destDim = getImageSize();
g.drawImage(image, 0, 0, destDim.width, destDim.height,
0, 0, image.getWidth(), image.getHeight(), null);
}
public void add(GraphObject3D object) {
objectList.addLast(object);
}
public void remove(GraphObject3D object) {
objectList.remove(object);
}
public void remove(int index) {
objectList.remove(index);
}
protected LinkedList getObjectList() {
return objectList;
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -