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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Splash screen, Как показать PNG 
:(
    Опции темы
Slanix
Дата 25.3.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Хочу сделать splash screen с картинкой формата PNG (с полупрозрачными элементами).
Пробую реализовать через Graphics.drawImage(). Но полупрозрачность не получается.

--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
LSD
Дата 25.3.2005, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Вот этот код работает
Код
public class A
{
  public static void main(String[] args)
  {
    try
    {
      BufferedImage img = ImageIO.read(new File("img.png"));
      JFrame frame = new JFrame("Image");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.getContentPane().add(new JLabel(new ImageIcon(img)));
      frame.getContentPane().setBackground(Color.GREEN);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.show();
    }
    catch(IOException ex)
    {
      ex.printStackTrace();
    }
  }
}


Это сообщение отредактировал(а) LSD - 25.3.2005, 20:35

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  img.png


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Slanix
Дата 28.3.2005, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Это она прозрачная относительно чего будет?
Мне так кажеться, что прозрачная только только относительно фрэйма,
а относительно рабочего стола?
--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
Domestic Cat
Дата 28.3.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Грубый набросок, но на сплеш потянет
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class Transp extends JWindow implements FocusListener, MouseMotionListener, MouseListener 
{
    Image img, tim, splashImage;
    Graphics tig;
    Point mp;
    Robot r;
    private static String SPLASH_IMG = "pr.gif";

    public Transp(Frame parent) 
    {
        super(parent);
        init();
    }
    private void init() 
    {
        try 
        {
            r = new Robot();
        } 
        catch (AWTException e) 
        {
            System.out.println("robot excepton occurred");
        }
        ImageIcon image = new ImageIcon("pr.gif");
        splashImage = image.getImage();
        int w = splashImage.getWidth(null);
        int h = splashImage.getHeight(null);
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        int x = screen.width / 2 - w / 2;
        int y = screen.height / 2 - h / 2;
        setBounds(x, y, w, h);
        capture();
        addMouseMotionListener(this);
        addMouseListener(this);
        addFocusListener(this);
        setVisible(true);
        requestFocusInWindow();
        Thread t = new Thread(new Runnable() 
        {
            public void run() 
            {
                while(isVisible()) 
                {
                    repaint();
                    try 
                    {
                        Thread.sleep(1000);
                    } 
                    catch (InterruptedException e) {}
                }
            }
        });
        t.start();
    }
  
        public void mouseDragged(MouseEvent m) 
        {
            if (mp == null) return;
            Point p = m.getPoint();
            int x = getX() + p.x - mp.x;
            int y = getY() + p.y - mp.y;
            setLocation(x, y);
            paintP(getGraphics());
        }
        public void mouseMoved(MouseEvent m) {}
        public void mouseClicked(MouseEvent m) {}
        public void mouseEntered(MouseEvent m) {}    
        public void mouseExited(MouseEvent m) {}
        public void mouseReleased(MouseEvent m) {
            mp = null;
        }
        public void mousePressed(MouseEvent m) {
            mp = m.getPoint();
        }
        public void focusGained(FocusEvent fe) 
        {
            setSize(0, 0);
            capture();
            setSize(100, 100);
        }
        public void focusLost(FocusEvent fe) {}
        
        public void capture() 
        {
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
            img = r.createScreenCapture(new Rectangle(0, 0, d.width, d.height));
        }
        
        public void captureX() 
        {
            Rectangle rect = getBounds();
            setVisible(false);
            Thread.yield();
            Image xmg = r.createScreenCapture(rect);
            img.getGraphics().drawImage(xmg, rect.x, rect.y, rect.width, rect.height, null);
            setVisible(true);
        }
        
        public void paint(Graphics g) 
        {
            Rectangle rect = g.getClipBounds();
            if (tim == null) 
            {
                tim = createImage(getWidth(), getHeight());
                tig = tim.getGraphics();
            }
            if (!rect.getSize().equals(getSize()))
                captureX();
            else
                paintP(g);
        }
        
        public void paintP(Graphics g) 
        {
            tig.drawImage(img, 0, 0, getWidth(), getHeight(),
            getX(), getY(), getX() + getWidth(), getY() + getHeight(), null);
            tig.drawImage(splashImage, 0, 0, null);
            g.drawImage(tim, 0, 0, null);
        }
            
        public static void main(String[] args) 
        {
            new Transp(null);
        }
}

Рисунок транспарантный, конечно.


--------------------

PM   Вверх
bars_uz
Дата 28.3.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Splash Screen
Код

import javax.swing.JLabel;
import javax.swing.JWindow;
import javax.swing.SwingConstants;
import javax.swing.ImageIcon;
import java.awt.Dimension;
import java.awt.Toolkit;

public class SplashScreen {
  public SplashScreen(int sleepScreen) {
    ImageIcon img = new ImageIcon(SplashScreen.class.getResource("splashscreen.jpg"));
    JWindow jwin = new JWindow();
    jwin.getContentPane().add(new JLabel(img, SwingConstants.CENTER));
    int width = 372;
    int height = 328;
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (screen.width - width) / 2;
    int y = (screen.height - height) / 2;
    jwin.setBounds(x, y, width, height);

    jwin.setVisible(true);

    try {
      Thread.sleep(sleepScreen);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    jwin.setVisible(false);
    jwin.dispose();

  }

  public static void main(String[] arg) {
    SplashScreen splashScreen = new SplashScreen(5000);
  }
}

PM MAIL ICQ   Вверх
Domestic Cat
Дата 28.3.2005, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



bars_uz, требовался не просто сплаш скрин, а транспарантный скрин.


--------------------

PM   Вверх
Slanix
Дата 29.3.2005, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да даже не просто транспарантный, а с градиентной прозрачностью. Вобщем, полноценный PNG надо отобразить
поверх всего, что есть на рабочем столе.
--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
Domestic Cat
Дата 29.3.2005, 04:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Ну так попробуй мой вариант.


--------------------

PM   Вверх
Slanix
Дата 29.3.2005, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Это сообщение отредактировал(а) Slanix - 29.3.2005, 06:35
--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
Slanix
Дата 29.3.2005, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

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

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


 




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


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

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