⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canvas3d.java

📁 java写的3D程序,src目录下有其源程序.
💻 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 + -