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

📄 painter.java

📁 Describes simple java code for developments. IT comtains 10 codes
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                else{
                    gImage.draw(rectangle);
                }

                if(transparent){
                    gImage.setComposite(composite);
                }
            }

            if(rounded && width != 0 && height != 0){

                RoundRectangle2D.Double round = 
                    new RoundRectangle2D.Double(tempStart.x, 
                    tempStart.y, width, height, 10, 10);

                if(shadow){
                    paint = gImage.getPaint();
                    composite = gImage.getComposite();

                    gImage.setPaint(Color.black);
                    gImage.setComposite(AlphaComposite.getInstance
                        (AlphaComposite.SRC_OVER, 0.3f));

                    RoundRectangle2D.Double round2 = 
                        new RoundRectangle2D.Double(tempStart.x + 9, 
                        tempStart.y + 9, width, height, 10, 10);

                    if(solid || shade || transparent || texture){
                        gImage.fill(round2);
                    }
                    else{
                        gImage.draw(round2);
                    }

                    gImage.setPaint(paint);
                    gImage.setComposite(composite);
                }

                if(solid){
                    gImage.setPaint(color);
                }

                if(shade){
                    gImage.setPaint(
                        new GradientPaint(
                            tempStart.x, tempStart.y, color,
                            tempEnd.x, tempEnd.y, Color.black));
                }

                if(transparent){
                    gImage.setComposite(AlphaComposite.getInstance
                    (AlphaComposite.SRC_OVER,0.3f));
                }

                if(texture){
                    Rectangle2D.Double anchor = 
                        new Rectangle2D.Double(0,0,
                        tileImage.getWidth(), tileImage.getHeight());

                    TexturePaint texturePaint = 
                        new TexturePaint(tileImage,anchor);
        
                    gImage.setPaint(texturePaint);
                }

                if(solid || shade || texture || transparent){
                    gImage.fill(round);
                }
                else{
                    gImage.draw(round);
                }

                if(transparent){
                    gImage.setComposite(composite);
                }
            }

            if(draw){
                Line2D.Double drawLine;
   
                if(shadow){
                    paint = gImage.getPaint();
                    composite = gImage.getComposite();

                    gImage.setPaint(Color.black);
                    gImage.setComposite(AlphaComposite.getInstance
                        (AlphaComposite.SRC_OVER, 0.3f));

                    for(int loop_index = 0; loop_index < dots - 1; 
                        loop_index++){
                        if(dragging){
                            drawLine = new Line2D.Double(
                                dot[loop_index].x + 9, 
                                dot[loop_index].y + 9, 
                                dot[loop_index + 1].x + 9, 
                                dot[loop_index + 1].y + 9);
                        }else{
                            drawLine = new Line2D.Double(
                                dot[loop_index].x - offsetX + 9, 
                                dot[loop_index].y - offsetY + 9, 
                                dot[loop_index + 1].x - offsetX + 9,
                                dot[loop_index + 1].y - offsetY + 9);
                        }
                        gImage.draw(drawLine);
                    }

                    gImage.setPaint(paint);
                    gImage.setComposite(composite);
                }

                for(int loop_index = 0; loop_index < dots - 1; 
                    loop_index++){
                    if(dragging){
                        drawLine = new Line2D.Double(dot[loop_index].x, 
                            dot[loop_index].y, dot[loop_index + 1].x, 
                            dot[loop_index + 1].y);
                    }else{
                        drawLine = new Line2D.Double(dot[loop_index].x 
                            - offsetX, dot[loop_index].y - offsetY, 
                            dot[loop_index + 1].x - offsetX, 
                            dot[loop_index + 1].y - offsetY);
                    }
                    gImage.draw(drawLine);
                }
                if(!dragging){
                    dots = 0;
                }
            }
        }
        
        if(text){
            if(drawText != null && end != null && end.x !=0 && 
                end.y !=0){

                if(shadow){
                    paint = gImage.getPaint();
                    composite = gImage.getComposite();

                    gImage.setPaint(Color.black);
                    gImage.setComposite(AlphaComposite.getInstance
                        (AlphaComposite.SRC_OVER, 0.3f));

                    gImage.drawString(drawText, end.x + 9, end.y + 9);

                    gImage.setPaint(paint);
                    gImage.setComposite(composite);
                }

                gImage.drawString(drawText, end.x, end.y);
            }
        }

        if(!dragging){
            g.drawImage(image, offsetX, offsetY, this);
        }
        g.setColor(Color.black);
        gImage.setStroke(new BasicStroke(1));
        g.drawRect(offsetX, offsetY, imageWidth, imageHeight);
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == openMenuItem){

            try{
                dialog.setMode(FileDialog.LOAD);

                dialog.setVisible(true);

                if(dialog.getFile() != ""){
                    File inputFile = new File(dialog.getDirectory() + 
                        dialog.getFile()); 
                    bufferedImage = ImageIO.read(inputFile); 
                    if(bufferedImage != null){
                        image = createImage(bufferedImage.getWidth(), 
                        bufferedImage.getHeight());
                        Graphics2D g2d = (Graphics2D) 
                            image.getGraphics();
                        g2d.drawImage(bufferedImage, null, 0, 0);
                        imageWidth = bufferedImage.getWidth();
                        imageHeight = bufferedImage.getHeight();
                        setSize(imageWidth + 100, imageHeight + 90);
                        repaint();
                    }
                }
            }catch(Exception exp){
                System.out.println(exp.getMessage());
            }
        }

        if(e.getSource() == saveMenuItem){

            dialog.setMode(FileDialog.SAVE);

            dialog.setVisible(true);

            try{
                if(dialog.getFile() != ""){
                    String outfile = dialog.getFile();
                    File outputFile = new File(dialog.getDirectory() + 
                        outfile); 
                    bufferedImage.createGraphics().drawImage(image, 
                        0, 0, this); 
                    ImageIO.write(bufferedImage, 
                        outfile.substring(outfile.length() - 3,  
                        outfile.length()), outputFile); 
                }
            }
            catch(Exception ex){
                System.out.println(ex.getMessage());
            }
        }

        if(e.getSource() == colorMenuItem){
            color = JColorChooser.showDialog(this, "Select your color", 
                Color.black);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == newMenuItem){
            bufferedImage = new BufferedImage (300, 300,           
                BufferedImage.TYPE_INT_BGR ); 
            image = createImage(300, 300);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
            repaint();
        }

        if(e.getSource() == exitMenuItem){
            System.exit(0);
        }
    }

    public void itemStateChanged(ItemEvent e)
    {
        if(e.getSource() == linesMenuItem){
            setFlagsFalse();
            line = true;
            linesMenuItem.setState(true);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == ellipsesMenuItem){
            setFlagsFalse();
            ellipse = true;
            ellipsesMenuItem.setState(true);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == rectanglesMenuItem){
            setFlagsFalse();
            rectangle = true;
            rectanglesMenuItem.setState(true);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == roundedMenuItem){
            setFlagsFalse();
            rounded = true;
            roundedMenuItem.setState(true);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == freehandMenuItem){
            setFlagsFalse();
            draw = true;
            freehandMenuItem.setState(true);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == solidMenuItem){
            solid = !solid;
            if(solid){
                texture = false;
                shade = false;
            }
            solidMenuItem.setState(solid);
            gradientMenuItem.setState(shade);
            textureMenuItem.setState(texture);
            plainMenuItem.setState(false);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == gradientMenuItem){
            shade = !shade;
            if(shade){
                solid = false;
                texture = false;
            }
            solidMenuItem.setState(solid);
            gradientMenuItem.setState(shade);
            textureMenuItem.setState(texture);
            plainMenuItem.setState(false);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == textureMenuItem){
            texture = !texture;
            if(texture){
                shade = false;
                solid = false;
            }
            solidMenuItem.setState(solid);
            gradientMenuItem.setState(shade);
            textureMenuItem.setState(texture);
            plainMenuItem.setState(false);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == transparentMenuItem){
            transparent = !transparent;
            transparentMenuItem.setState(transparent);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == textMenuItem){
            textDialog.setVisible(true);
            drawText = textDialog.data;
            setFlagsFalse();
            text = true;
            textMenuItem.setState(true);
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == thickMenuItem){
            thick = thickMenuItem.getState();
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == plainMenuItem){
            solidMenuItem.setState(false);
            gradientMenuItem.setState(false);
            textureMenuItem.setState(false);
            transparentMenuItem.setState(false);
            plainMenuItem.setState(true);
            shade = false;
            solid = false;
            transparent = false;
            texture = false;
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }

        if(e.getSource() == shadowMenuItem){
            shadow = shadowMenuItem.getState();
            start.x = -20;
            start.y = -20;
            end.x = -20;
            end.y = -20;
        }
    }

    void setFlagsFalse()
    {
        rounded = false;
        line = false;
        ellipse = false;
        rectangle = false;
        draw = false;
        text = false;
        linesMenuItem.setState(false);
        ellipsesMenuItem.setState(false);
        rectanglesMenuItem.setState(false);
        roundedMenuItem.setState(false);
        freehandMenuItem.setState(false);
        textMenuItem.setState(false);
    }
}

class OkCancelDialog extends Dialog implements ActionListener
{
    Button ok, cancel;
    TextField text;
    public String data;

    OkCancelDialog(Frame hostFrame, String title, boolean dModal)
    {
        super(hostFrame, title, dModal);
        setSize(280, 100);
        setLayout(new FlowLayout());
        text = new TextField(30);
        add(text);
        ok = new Button("OK");
        add(ok);
        ok.addActionListener((ActionListener)this);
        cancel = new Button("Cancel");
        add(cancel);
        cancel.addActionListener(this);
        data = new String("");
    }

    public void actionPerformed(ActionEvent event)
    {
        if(event.getSource() == ok){
            data = text.getText();
        } else {
            data = "";
        }
        setVisible(false);
    }
}

⌨️ 快捷键说明

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