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

📄 fejstfrm.java

📁 这是一个制做3D立体图(Stereograms)的一个Java Applet, 除了可以把3D图转为Stereogram外
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    }

    public void mouseExited(MouseEvent mouseevent)
    {
    }

    public void mouseClicked(MouseEvent mouseevent)
    {
    }

    public void adjustmentValueChanged(AdjustmentEvent adjustmentevent)
    {
        setTitle(wmsg);
        if(adjustmentevent.getAdjustable() == sr)
            iConf[5] = sr.getValue();
        if(adjustmentevent.getAdjustable() == sr1)
            iConf[17] = sr1.getValue();
        lb1.setText("base(" + iConf[5] + ")");
        lb2.setText("depth(" + iConf[17] + ")");
        if(nDraw == 1)
        {
            ReadMdlImg1();
            nDraw = 0;
        }
        makestgrm();
        repaint();
        setTitle(stt);
        requestFocus();
    }

    void showeyemethod()
    {
        if(iConf[4] == 0)
        {
            bt1.setForeground(Color.blue);
            bt2.setForeground(Color.black);
        } else
        {
            bt2.setForeground(Color.blue);
            bt1.setForeground(Color.black);
        }
        bt1.setLabel("parallel");
        bt2.setLabel("cross");
    }

    public void actionPerformed(ActionEvent actionevent)
    {
        requestFocus();
        if(actionevent.getSource() == bt7)
        {
            wclose();
            return;
        }
        if(actionevent.getSource() == bt1)
        {
            iConf[4] = 0;
            showeyemethod();
        }
        if(actionevent.getSource() == bt2)
        {
            iConf[4] = 1;
            showeyemethod();
        }
        if(actionevent.getSource() == bt6)
        {
            if(nModel > 0)
            {
                nGenga = (nGenga + 1) % 2;
                repaint();
                return;
            }
            if(nDraw == 0)
            {
                nDraw = 1;
                repaint();
                return;
            }
        }
        if(actionevent.getSource() == bt3)
            if(nQuiz == 1)
            {
                DispQuiz();
                return;
            } else
            {
                nErace = 0;
                return;
            }
        if(actionevent.getSource() == bt4)
        {
            nErace = 1;
            return;
        }
        if(actionevent.getSource() == bt5)
            if(nDraw == 0)
            {
                return;
            } else
            {
                nErace = 0;
                lines.removeAllElements();
                colors.removeAllElements();
                offgraphics.setColor(getBackground());
                offgraphics.fillRect(0, 0, apx, apy);
                repaint();
                return;
            }
        setTitle(wmsg);
        if(nDraw == 1)
        {
            ReadMdlImg1();
            nDraw = 0;
        }
        makestgrm();
        repaint();
        setTitle(stt);
    }

    public void keyPressed(KeyEvent keyevent)
    {
        if(keyevent.getKeyCode() == 27)
        {
            wclose();
            return;
        }
        if(keyevent.getKeyCode() == 88)
        {
            setTitle(wmsg);
            iConf[4] = (iConf[4] + 1) % 2;
            showeyemethod();
            if(nDraw == 1)
            {
                ReadMdlImg1();
                nDraw = 0;
            }
            makestgrm();
            repaint();
            setTitle(stt);
        }
        if(nModel > 0 && nModel < mdlmax)
        {
            if(keyevent.getKeyCode() == 8)
            {
                setTitle(wmsg);
                nModel--;
                if(nModel < 1)
                    nModel = mdlmax - 1;
                c1.select(nModel);
                ReadMdlImg(nModel);
                makestgrm();
                repaint();
                setTitle(stt);
            }
            if(keyevent.getKeyCode() == 32)
            {
                setTitle(wmsg);
                nModel++;
                if(nModel > mdlmax - 1)
                    nModel = 1;
                c1.select(nModel);
                ReadMdlImg(nModel);
                makestgrm();
                repaint();
                setTitle(stt);
                return;
            }
        } else
        if(keyevent.getKeyCode() == 32 && nModel == mdlmax)
            DispQuiz();
    }

    public void keyReleased(KeyEvent keyevent)
    {
    }

    public void keyTyped(KeyEvent keyevent)
    {
    }

    public void itemStateChanged(ItemEvent itemevent)
    {
        int k = 0;
        setTitle(wmsg);
        if(itemevent.getItemSelectable() == c)
        {
            for(int i = 0; i < 33; i++)
                if(strfil[i].equals((String)itemevent.getItem()))
                    k = i;

            SetiConf(k);
            SetPalData(iConf[2]);
            if(nDraw == 1)
            {
                ReadMdlImg1();
                nDraw = 0;
            }
            makestgrm();
            requestFocus();
            repaint();
        }
        if(itemevent.getItemSelectable() == c1)
        {
            nDraw = 0;
            int l = -1;
            nQuiz = 0;
            for(int j = 0; j < mdlmax + 1; j++)
                if(mdlname[j].equals((String)itemevent.getItem()))
                    l = j;

            if(l < 0)
            {
                setTitle(stt);
                return;
            }
            nModel = l;
            if(nModel == 0)
            {
                nErace = 0;
                nDraw = 1;
                c1.setBounds(30, nFT, 80, 20);
                bt3.setBounds(115, nFT, 20, 20);
                bt4.setBounds(135, nFT, 20, 20);
                bt5.setBounds(155, nFT, 20, 20);
                c.setBounds(180, nFT, 100, 20);
                bt3.setLabel("P");
                repaint();
                setTitle(stt);
                return;
            }
            if(nModel == mdlmax)
            {
                nQuiz = 1;
                c1.setBounds(30, nFT, 80, 20);
                bt3.setBounds(115, nFT, 60, 20);
                bt4.setBounds(155, nFT, 0, 0);
                bt5.setBounds(175, nFT, 0, 0);
                c.setBounds(180, nFT, 100, 20);
                bt3.setLabel("Next");
                DispQuiz();
                setTitle(stt);
                return;
            }
            c1.setBounds(30, nFT, 120, 20);
            bt3.setBounds(145, nFT, 0, 0);
            bt4.setBounds(165, nFT, 0, 0);
            bt5.setBounds(185, nFT, 0, 0);
            c.setBounds(160, nFT, 120, 20);
            ReadMdlImg(nModel);
            makestgrm();
            requestFocus();
            repaint();
        }
        setTitle(stt);
    }

    void DispQuiz()
    {
        setTitle(wmsg);
        double d = 1.0D + Math.random() * (double)(mdlmax - 1);
        ReadMdlImg((int)d);
        d = Math.random() * 33D;
        c.select((int)d);
        SetiConf((int)d);
        SetPalData(iConf[2]);
        makestgrm();
        requestFocus();
        if(kore != null)
            kore.play();
        repaint();
        setTitle(stt);
    }

    /** Read depth/3d model file*/
    void ReadMdlImg(int i)
    {
        if(img != null)
        {
            img.flush();
            img = null;
        }
        img = applet.getI(mdlfile[i]);
        
        
        cxDib = img.getWidth(this);
        cyDib = img.getHeight(this);
        pixs = new int[cxDib * cyDib];
        try
        {
            PixelGrabber pixelgrabber = new PixelGrabber(img, 0, 0, cxDib, cyDib, pixs, 0, cxDib);
            pixelgrabber.grabPixels();
            return;
        }
        catch(InterruptedException _ex)
        {
            return;
        }
    }

    void ReadMdlImg1()
    {
        cxDib = offscreen.getWidth(this);
        cyDib = offscreen.getHeight(this);
        pixs = new int[cxDib * cyDib];
        try
        {
            PixelGrabber pixelgrabber = new PixelGrabber(offscreen, 0, 0, cxDib, cyDib, pixs, 0, cxDib);
            pixelgrabber.grabPixels();
        }
        catch(InterruptedException _ex) { }
        for(int j = 0; j < cyDib; j++)
        {
            for(int i = 0; i < cxDib; i++)
                if((pixs[j * cxDib + i] & 0xffffff) == 0)
                    pixs[j * cxDib + i] = 0xff444444;
                else
                    pixs[j * cxDib + i] = 0xff000000;

        }

    }

    void SetPalData(int i)
    {
        int ai[] = new int[256];
        int k1 = col[i][0];
        int l1 = col[i][1];
        int i2 = (l1 + 1) * (k1 - 1) + 1;
        palsu = i2;
        int j = 0;
        for(int l = 0; l < k1 - 1; l++)
        {
            int j2 = col[i][2 + l * 3];
            int i3 = col[i][3 + l * 3];
            int l3 = col[i][4 + l * 3];
            ai[j] = 0xff000000 | j2 << 16 | i3 << 8 | l3;
            j++;
            for(int j1 = 1; j1 < l1 + 1; j1++)
            {
                int k2 = col[i][2 + l * 3] + ((col[i][2 + (l + 1) * 3] - col[i][2 + l * 3]) * j1) / (l1 + 1);
                int j3 = col[i][3 + l * 3] + ((col[i][3 + (l + 1) * 3] - col[i][3 + l * 3]) * j1) / (l1 + 1);
                int i4 = col[i][4 + l * 3] + ((col[i][4 + (l + 1) * 3] - col[i][4 + l * 3]) * j1) / (l1 + 1);
                ai[j] = 0xff000000 | k2 << 16 | j3 << 8 | i4;
                j++;
            }

        }

        int l2 = col[i][2 + (k1 - 1) * 3];
        int k3 = col[i][3 + (k1 - 1) * 3];
        int j4 = col[i][4 + (k1 - 1) * 3];
        ai[j] = 0xff000000 | l2 << 16 | k3 << 8 | j4;
        for(int k = 0; k < palsu; k++)
        {
            int i1 = k + iConf[6];
            if(i1 > palsu - 1)
                i1 -= palsu;
            pal[k] = ai[i1];
        }

    }

    void SetiConf(int i)
    {
        for(int j = 6; j < 17; j++)
            iConf[j] = filt[i][j - 6];

        iConf[2] = filt[i][11] - 1;
    }

    public void update(Graphics g)
    {
        g.clearRect(0, 0, apx, nBtm);
        paint(g);
    }

    public void paint(Graphics g)
    {
        if(nDraw == 1)
        {
            g.drawImage(offscreen, 0, nBtm, this);
            return;
        }
        g.drawImage(new_img, 0, nBtm, this);
        if(nGenga == 1)
            g.drawImage(img, 0, nBtm, this);
        g.setColor(Color.white);
        g.fillOval((apx - iConf[5]) / 2, nBtm + 5, 20, 10);
        g.fillOval((apx + iConf[5]) / 2, nBtm + 5, 20, 10);
        g.setColor(Color.black);
        g.fillOval((apx - iConf[5]) / 2 + 5, nBtm + 5, 10, 10);
        g.fillOval((apx + iConf[5]) / 2 + 5, nBtm + 5, 10, 10);
        
    }

    int random(int i)
    {
        //return (int)(Math.random()*10);
        ///*
        byte byte0 = 51;
        jrnd = (jrnd + 1) % 89;
        int j = (jrnd + byte0) % 89;
        mrnd[jrnd] ^= mrnd[j];
        return (mrnd[jrnd] * i) / 32768;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -