Увеличение изображения
От: Honest  
Дата: 21.05.07 11:56
Оценка:
Подскажите пожалуйста как реализовать:
На форме имеется изображение размером 50х50(допустим). При нажатии на изображение требуется чтобы оно плавно увеличилось , как бы приблизилось. Приближенное изображение находится на другой форме.
Re: Увеличение изображения
От: Blazkowicz Россия  
Дата: 21.05.07 12:15
Оценка:
Здравствуйте, Honest, Вы писали:

H>Подскажите пожалуйста как реализовать:

H>На форме имеется изображение размером 50х50(допустим). При нажатии на изображение требуется чтобы оно плавно увеличилось , как бы приблизилось. Приближенное изображение находится на другой форме.

Java2D FAQ
И вот ещё может оказатся полезным:
http://rsdn.ru/Forum/Message.aspx?mid=2277188
Автор: n0name2
Дата: 22.12.06
Re[2]: Увеличение изображения
От: Honest  
Дата: 22.05.07 06:42
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Java2D FAQ

B>И вот ещё может оказатся полезным:
B>http://rsdn.ru/Forum/Message.aspx?mid=2277188
Автор: n0name2
Дата: 22.12.06


Спасибо за ссылки. В какой-то мере они оказались полезными. Но проблема вот в чем, приближение изображение должно быть плавным. У меня же получилось так, что окно с изображение увеличивается, но изображение в окне появляется не сразу. Вот код:

                    dialog.addComponentListener(new ComponentAdapter() {

                        private void init(final ComponentEvent e) {
                            // Create the image
                            Thread t = new Thread(new Runnable() {
                                public void run() {
                                    int tw = e.getComponent().getWidth();
                                    int th = e.getComponent().getHeight();
                                    // Create the graphics
                                    Graphics2D graphics = (Graphics2D) panel.getGraphics();
                                    try {
                                        // Set rendering hints
                                        graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                                        graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
                                        graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
                                        // Open the source image
                                        BufferedImage source = im;
                                        // Get width & geight
                                        int w = source.getWidth(), h = source.getHeight();
                                        // Calculate the scale
                                        double scale = Math.min((double) tw / (double) w, (double) th / (double) h);
                                        // Calculate the coordinates
                                        int x = (int) (((double) tw - (double) w * scale) / 2.0d), y = (int) (((double) th - (double) h * scale) / 2.0d);
                                        // Get the scaled instance
                                        Image scaled = source.getScaledInstance((int) (w * scale), (int) (h * scale), Image.SCALE_FAST);
                                        // Set the color
                                        //     graphics.setColor(Color.WHITE);
                                        // Paint the white rectangle
                                        //       graphics.fillRect(0, 0, tw, th);
                                        // Draw the image
                                        graphics.drawImage(scaled, x, y, null);

                                    } finally {
                                        // Always dispose the graphics
                                        graphics.dispose();
                                    }
                                }
                            });
                            t.setPriority(Thread.NORM_PRIORITY);
                            t.start();

                        }

                        public void componentResized(ComponentEvent e) {
                            super.componentResized(e);
                            init(e);
                        }

                        public void componentMoved(ComponentEvent e) {
                            super.componentMoved(e);
                            init(e);
                        }
                    });


И вот так я меняю размеры окна, чотбы был эффект раскрытия:

                    int i = 60;
                    while (i < 900) {
                        dialog.setSize(i, i);
                        i = i + 20;

                    }


Интересно реализовано ли это в вебе? и можно ли это использовать?
Re[3]: Увеличение изображения
От: Eugeny__ Украина  
Дата: 01.06.07 16:43
Оценка:
Здравствуйте, Honest, Вы писали:

H>Здравствуйте, Blazkowicz, Вы писали:


B>>Java2D FAQ

B>>И вот ещё может оказатся полезным:
B>>http://rsdn.ru/Forum/Message.aspx?mid=2277188
Автор: n0name2
Дата: 22.12.06


H>Спасибо за ссылки. В какой-то мере они оказались полезными. Но проблема вот в чем, приближение изображение должно быть плавным. У меня же получилось так, что окно с изображение увеличивается, но изображение в окне появляется не сразу. Вот код:



Вообще, не рекомендуется рисовать что-то на компоненте в потоке, отличном от EventDispatcherThread. Большая вероятность, что именно из-за этого не работает как надо.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.