2011-03-16 56 views
1

这是我使用两个方块绘制空心立方体的代码。更好的主意?有没有更好的方法来绘制这样的空心立方体?

import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 

public class CanvasUnit extends Canvas { 

    String SOutput; 

    public CanvasUnit(String TextToPrint) { 
     //SOutput = TextToPrint; 
     SOutput = "This is a hollow cube"; 
    } 

    public void paint(Graphics g) { 

     int width = getWidth(); 
     int height = getHeight(); 
     int WLen = width/4; 
     int HLen = height/4; 
     int WPosA = (WLen * 2); 
     int HPosA = (HLen * 2); 
     int WPosB = (WPosA+WLen/2); 
     int HPosB = (HPosA+HLen/2); 

     //Clear the screen 
     g.setColor(0,0,0); 
     g.fillRect(0, 0, width, height); 
     g.setColor(255,255,255); 
     g.drawString(SOutput,0,0,Graphics.TOP|Graphics.LEFT); 

     //Object1 
     g.drawLine(WLen, HLen, WPosA, HLen); 
     g.drawLine(WLen, HLen, WLen, HPosA); 
     g.drawLine(WLen, HPosA, WPosA, HPosA); 
     g.drawLine(WPosA, HLen, WPosA, HPosA); 

     //-------------------------------------------- 

     //Object2 
     g.drawLine(Ex(WLen), Ex(HLen), WPosB, Ex(HLen)); 
     g.drawLine(Ex(WLen), Ex(HLen), Ex(WLen), HPosB); 
     g.drawLine(Ex(WLen), HPosB, WPosB, HPosB); 
     g.drawLine(WPosB, Ex(HLen), WPosB, HPosB); 

     //-------------------------------------------- 

     //Connector Lines 
     g.drawLine(WLen, HLen, Ex(WLen), Ex(HLen)); 
     g.drawLine(WPosA, HLen, WPosB, Ex(HLen)); 
     g.drawLine(WLen, HPosA, Ex(WLen), HPosB); 
     g.drawLine(WPosA, HPosA, WPosB, HPosB); 

    } 
     private int Ex(int value){ 
     return value + (value/2); } 


} 

输出: Output : http://up.iranblog.com/images/ttfhinrbao6hvlkko8uk.png

回答

1

更好的办法:

//Draw two hollow squares 
    g.drawRect(WLen, HLen, WLen, HLen); 
    g.drawRect(Ex(WLen), Ex(HLen), WLen, HLen); 
    //Connector Lines 
    g.drawLine(WLen, HLen, Ex(WLen), Ex(HLen)); 
    g.drawLine(WPosA, HLen, WPosB, Ex(HLen)); 
    g.drawLine(WLen, HPosA, Ex(WLen), HPosB); 
    g.drawLine(WPosA, HPosA, WPosB, HPosB); 
相关问题