Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск процесса, не запускается run 
V
    Опции темы
Антоннио
  Дата 6.5.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.4.2008
Где: Киев

Репутация: нет
Всего: -2



 Хочу создать программку имитирующую волну на изображении, сам эффект волны уже создал(нужно в параметрах его доработать), а вот теперь пытаюсь запустить его, то есть чтобы волна пробегала по изображению...
создаю класс, делаю его Runnable - но от чего-то поток не запускается да и ошибку не выдает... ?
 Вот сам код:
Код

// Изменение масштаба части изображения

import static java.awt.Color.*;

import java.awt.Image;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;

import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import java.awt.AlphaComposite;
import java.awt.Graphics2D;

class PreviewZoomImage extends JFrame {
    private Image image;
    private JLabel drawLabel;    
    // ширина изображения
    private int width;
    // высота изображения
    private int height;
    // копия буфера изображения
    private BufferedImage bufferedImage;
    // цвет пикселя
    private Color color;
    //коэфициент света
    private int conf=3;
    public PreviewZoomImage() {
        setTitle("PreviewImage");
        

        try {
            image = ImageIO.read(new File("diablo_3_icon.jpg"));
            bufferedImage = ImageIO.read(new File("diablo_3_icon.jpg"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }

        width = image.getWidth(this);
        height = image.getHeight(this);
        setLocationRelativeTo(null);
        setSize(width, height);

        setMaximizedBounds(new Rectangle(width, height));

        drawLabel = new DrawPanel();

        add(drawLabel);

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
        }
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new PreviewZoomImage();
                frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
            }
        });
    }
    
    public class DrawPanel extends JLabel implements Runnable {
        
        private int check=1;
        
        @Override
        public void run() {
            check=0;
            while (check<300) {
                check+=1;
                repaint();
                try {
                    Thread.sleep(5);
                } catch (InterruptedException ex) {
                }
            }
        }
        
        private long t = System.nanoTime();
        
        public void paintComponent(Graphics g) {
            
            long tm = System.nanoTime() - t;
            System.out.println(check);
            g.drawImage(image, 0, 0, width, height, null);
            g.setColor(color);
            for ( int i=0 ; i< 30 ; i++ ){
                double x = ( Math.PI/2 )*( (double) (i/30) );
                for ( int j=0 ; j < height ; j++ ) {
                    int c = bufferedImage.getRGB(i+check, j);
                    int  red = (c & 0x00ff0000) >> 16;
                    int  green = (c & 0x0000ff00) >> 8;
                    int  blue = c & 0x000000ff;
                    double dR,dG,dB;
                    dR=-30*conf*Math.sin( x );
                    dG=-30*conf*Math.sin( x );
                    dB=-30*conf*Math.sin( x );
                    if (red + dR < 0) red = 0;
                    else if (red + dR > 255) red = 255;
                    else red += dR;
                    if (green + dG < 0) green = 0;
                    else if (green + dG > 255) green = 255;
                    else green += dG;
                    if (blue + dB < 0) blue = 0;
                    else if (blue + dB > 255) blue = 255;
                    else blue += dB;
                    color = new Color(red,green,blue);
                    g.setColor(color);
                    g.drawLine(i+check, j, i+check, j);
                }
            }
            
            for (int i=0;i<30;i++){
                double x = (Math.PI/2 );
                x *= (double) (30-i)/30;
                for (int j=0;j<height;j++) {
                    int c = bufferedImage.getRGB(i+30+check, j);
                    int  red = (c & 0x00ff0000) >> 16;
                    int  green = (c & 0x0000ff00) >> 8;
                    int  blue = c & 0x000000ff;
                    double dR,dG,dB;
                    dR=30*conf*Math.sin( x );
                    dG=30*conf*Math.sin( x );
                    dB=30*conf*Math.sin( x );
                    if (red + dR < 0) red = 0;
                    else if (red + dR > 255) red = 255;
                    else red += dR;
                    if (green + dG < 0) green = 0;
                    else if (green + dG > 255) green = 255;
                    else green += dG;
                    if (blue + dB < 0) blue = 0;
                    else if (blue + dB > 255) blue = 255;
                    else blue += dB;
                    color = new Color(red,green,blue);
                    g.setColor(color);
                    g.drawLine(i+30+check, j, i+30+check, j);
                }
            }

        }
        
        
    }
    
}

PM MAIL WWW ICQ   Вверх
MAXIMUS00
Дата 12.5.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 4.2.2009

Репутация: нет
Всего: -1



Код

new Thread(Runnable runnable).start();

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1081 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.