定义一个Draw3DRect类继承父类JFrame类
public class Draw3DRect extends JFrame{
public static void main(String[] args){
new Draw3DRect ().initUI ();
}
public void initUI(){
setTitle ("");
setSize (800,800);
setDefaultCloseOperation (EXIT_ON_CLOSE);
setVisible (true);
// Draw3DListener d3l= new Draw3DListener ();
// addMouseListener (d3l);
// d3l.g=this.getGraphics ();
}
重写paint函数
@Override
public void paint(Graphics g){
super.paint (g);
// draw(g,100,400,300,300,260,220);
int[][] arr={
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,1,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,1,0,0,0,1,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0}
};
for(int j = 0; j < 10; j++){
for(int i = 0; i < 10; i++){
if(arr[i][j]==0){
draw(g,100+j*30,700-i*30,30,30,26,22);
}
}
}
}
定义darw函数
public void draw(Graphics g, int x, int y, int w, int h, int dx, int dy){
// 计算点
Point p1 = new Point (x,y);
Point p2 = new Point (p1.x+w,p1.y);
Point p3 = new Point (p2.x,p2.y+h);
Point p4 = new Point (p1.x,p1.y+h);
Point p5 = new Point (p1.x+dx,p1.y-dy);
Point p6 = new Point (p5.x+w,p5.y);
Point p7 = new Point (p6.x,p6.y+h);
g.setColor (new Color (200,200,0));
g.fillRect(p1.x,p1.y,w,h);
g.setColor (new Color (0,0,0));
g.drawLine (p1.x,p1.y,p5.x,p5.y);
g.drawLine (p5.x,p5.y,p6.x,p6.y);
g.drawLine (p2.x,p2.y,p6.x,p6.y);
g.drawLine (p7.x,p7.y,p6.x,p6.y);
g.drawLine (p7.x,p7.y,p3.x,p3.y);
// 填充一个平面 p1 p5 p2 p6
for(int i = 0; i < dy; i++){
g.drawLine (p1.x+i*dx/dy,p1.y-i,p2.x+i*dx/dy,p2.y-i);
}
g.setColor (new Color (100,100,100));
// 填充一个平面 p2 p6 p3 p7
for(int i = 0; i < dy; i++){
g.drawLine (p2.x+i*dx/dy,p2.y-i,p3.x+i*dx/dy,p3.y-i);
g.drawLine (p2.x+i*dx/dy+1,p2.y-i,p3.x+i*dx/dy+1,p3.y-i);
}
}
效果图
初学者。