Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 18:19   #1
ALKOrobot
Форумчанин
 
Регистрация: 17.02.2010
Сообщений: 109
Вопрос Буфферизация изображения

Каким образом возможно рисовать изображение на виртуальном экране и выводить на экран монитора методом repaint()?

Код:
public class Form extends javax.swing.JFrame {

    Image img, pic,deadfire;
    int x[] = new int[6];
    int y[] = new int[6];
    int step = 0;
    int ko = 8;
int flag=1;
int flagy=0;
    /** Creates new form Form */
    public Form() {


        initComponents();
       deadfire = getToolkit().getImage("razor.png");
        img = getToolkit().getImage("target.png");
        pic = getToolkit().getImage("back.JPG");
        array();
repaint();

    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                formMousePressed(evt);
            }
        });
        addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                formMouseMoved(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void formMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseMoved
        q = evt.getX() * 2;
        w = evt.getY() * 2;
        repaint();

    }//GEN-LAST:event_formMouseMoved

    private void formMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMousePressed
 if(w>=200 && y[4]>140*2){y[4]=y[4]-w/8;y[5]=y[4];}if(w<200 && y[4]<190*2){y[4]=y[4]+w/8;y[5]=y[4];}
if(q>=300 && x[4]>130*2){x[4]=x[4]-q/8;x[5]=x[5]-q/8;}
 if(q<300 && x[4]<200*2){x[4]=x[4]+q/8;x[5]=x[5]+q/8;}
 repaint();
    }//GEN-LAST:event_formMousePressed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Form().setVisible(true);


            }
        });
    }
    public int q, w;

    public void array() {


        x[0] = 150;
        x[1] = 150;
        x[2] = 170;
        x[3] = 130;
        x[4] = 135;
        x[5] = 165;

        y[0] = 118;
        y[1] = 170;
        y[2] = 220;
        y[3] = 220;
        y[4] = 175;
        y[5] = 175;

        for (int i = 0; i < 6; i++) {
            x[i] = x[i] * 2 + 100;
            y[i] = y[i] * 2 + 50;
        }
    }



    public void paint(Graphics g) {
      
        if (step == 0) {
            String str;
            str = "Автор проги Сашуля";

            //  Font font = new Font("Verdana", Font.PLAIN, 11);
            for (int i = 0; i < 100; i++) {
                try {
                    pic = getToolkit().getImage("back.JPG");
                    g.drawImage(pic, 10, 10, this);
                    g.setFont(new Font("Serif", Font.PLAIN, i));
                    g.setColor(new Color(255 - i, i, 255-i));
                    g.drawString(str, 300 - i * 2, 100 + i);
                    repaint();
                    Thread.sleep(80);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex);
                }


            }
            step = 1;
        }


        if (step == 1) {
         

            g.setColor(Color.WHITE);
            g.drawImage(pic, -q / 20, -w / 20, this);
            g.drawImage(img, q, w, this);
          
g.drawImage(deadfire, -q/3, -w/3+600, this);
            g.drawLine(x[0] - q / ko, y[0] - w / ko, x[1] - q / ko, y[1] - w / ko);
            g.drawLine(x[1] - q / ko, y[1] - w / ko, x[2] - q / ko, y[2] - w / ko);
            g.drawLine(x[1] - q / ko, y[1] - w / ko, x[3] - q / ko, y[3] - w / ko);
            g.drawLine(x[0] - q / ko, y[0] + 15 - w / ko, x[4] - q / ko, y[4] - w / ko);

            g.drawLine(x[0] - q / ko, y[0] + 15 - w / ko, x[5] - q / ko, y[5] - w / ko);
            g.fillOval(x[0] - 6 - q / ko, y[0] - 6 - w / ko, 12, 12);

        }


    }
}

Последний раз редактировалось alexinspir; 17.05.2010 в 20:02.
ALKOrobot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические изображения. Sectron Паскаль, Turbo Pascal, PascalABC.NET 3 15.04.2014 14:16
поворот изображения Пепел Феникса Мультимедиа в Delphi 1 21.06.2009 19:53
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
масштабирование изображения Alex_Pro Общие вопросы .NET 0 25.05.2008 09:09
Изображения в БД alikon1 БД в Delphi 3 08.10.2007 13:13