2015-12-02 34 views
-3

我需要編寫一個繪製四面體(帶有四個三角形面的三維形狀)的程序。 我們必須要使用就怎麼做該類Graphics2D.Any想法S級的GeneralPath和方法平局,根據Swing中的用戶輸入繪製四面體

+0

可以請你描述多一點點? – manetsus

+0

這是要求別人做功課嗎?請提供有關您所嘗試的內容以及您迄今爲止所諮詢的資源的信息。 – silverbeak

+0

到目前爲止你做過什麼嗎? –

回答

0

我以前做過類似這樣的程序, 我已經創建了兩個數組調用baseXbaseY和設置 座標,然後添加兩個for循環來製作角點。 這種方式可以借鑑,甚至一個立方體以及

import java.awt.*; 
    import java.awt.geom.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    public class Tetrahedron extends JFrame { 
    // constructor 
    public Tetrahedron() 
    {super("Tetrahedron"); 
    setSize(275, 150); 
    setVisible(true); } 
    // draw tetrahedron 
    public void paint(Graphics g) 
    { 
    super.paint(g);  
    int baseX[] = { 110, 150, 50, 110 }; 
    int baseY[] = { 90, 130, 130, 90 }; 
    int x = 110, y = 40; 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setColor(Color.red); 
    GeneralPath tetrahedron = new GeneralPath(); 
    tetrahedron.moveTo(baseX[ 0 ], baseY[ 0 ]); 
    for (int i = 1; i < 4; i++) { 
    tetrahedron.lineTo(x, y); 
    tetrahedron.moveTo(baseX[ i - 1 ], baseY[ i - 1 ]); 
    tetrahedron.lineTo(baseX[ i ], baseY[ i ]); 
    }tetrahedron.closePath(); g2d.draw(tetrahedron); 
    } 
    public static void main(String args[]) 
    {Tetrahedron application = new Tetrahedron(); 
    application.setDefaultCloseOperation(EXIT_ON_CLOSE); } } 

從引用:JAVA如何第五版,由哈維Deitel公司編寫的程序,保羅·德特爾

+0

不好的建議的好例子。不要像'JFrame'那樣覆蓋頂級容器容器的'paint',而是使用'JPanel'或其他東西,而不是重寫它的'paintComponent'方法。 'JFrame'不是雙重緩衝的,你可能會冒着在框架裝飾下繪畫的風險。你也應該從事件調度線程的上下文中創建你的用戶界面,以防止其他問題 – MadProgrammer

+0

你似乎已經忘記從你的例子中刪除行號,你從哪裏複製過來的位置 – MadProgrammer

+0

@MadProgrammer引用自JAVA如何編程第五版,由Harvey Deitel,Paul Deitel撰寫,我在幾個月前引用了 – AVI