4.02.2015 / 18:31 |  | 
Askalite    Пользователь  
   Сейчас: Offline 
 Имя: Аскалайт Регистрация: 12.10.2011
   | Цитата Kalter:  Askalite, посмотрел в исходники - нет. Просто java.awt.Dimension - производный класс от java.geom.Dimension2D. Для меня просто удивлением было то, что мы передаём в javax.swing.JFrame  так и говорю, от очень абстрактного родителя досталось. Вдруг кто от этого же родителя запилит размеры в дюймах? Или в процентах? А так создавать два абстрактных класса не выгодно, вот и забацали один, тем более вся это фигня решается преобразованием типов.
   | 
  4.02.2015 / 21:24 |  | 
Kalter    Пользователь  
   Сейчас: Offline 
 Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
   | Я обнаружил, что почти везде используются картинки, предоставленные классом  java.awt.image.BufferedImage, однако, для того что бы использовать картинку в некоторых методах класса  java.awt.Graphics или  java.awt.Graphics2D (для рисования, конечно же), необходим  java.awt.Image. Класс  java.awt.Toolkit предоставляет возможность преобразования (и не только картинок), однако этого не совсем достаточно - появляется много лишнего кода с загрузкой, преобразованием, обработкой исключений, и тому подобного... Написал такой вот класс, но боюсь я, что это велосипед. Принимаю критику. Открыть спойлер Закрыть спойлер // package code.kalter.  
   
import java.awt.Image;  
import java.awt.Toolkit;  
   
import java.awt.image.BufferedImage;  
   
import java.io.InputStream;  
import java.io.IOException;  
   
import javax.imageio.ImageIO;  
   
/**  
 * Загрузчик картинок  
 *  
 * @author Kalter  
 */  
public class ImageLoader {  
   
    public static Image castBufferedImageToImage(BufferedImage source) {  
        return Toolkit.getDefaultToolkit().createImage(source.getSource());  
    }  
   
    // после выполнения данного метода поток остаётся открытым  
    public static Image createImage(InputStream inputStream) throws IOException {  
        return castBufferedImageToImage(ImageIO.read(inputStream));  
    }  
   
    public static Image createImageFrom(String path,String from)  
            throws IOException,IllegalArgumentException {  
        if (!from.equals(from.toLowerCase())) {  
            throw new IllegalArgumentException("variable \"from\""  
                    + "does not lower case");  
        }  
        switch (from) {  
            case "jar": {  
                return createImageFromJar(path);  
            }  
   
            default: {  
                throw new IllegalArgumentException("place \"from\" not found");  
            }  
        }  
    }  
   
    private static Image createImageFromJar(String path) throws IOException {  
        try (InputStream inputStream = Runtime  
                .getRuntime()  
                .getClass()  
                .getResourceAsStream(path);) {  
            return createImage(inputStream);  
        }  
    }  
   
    private ImageLoader() {  
    }  
}  
  __________________
   Homo homini penis est.  Изменено Kalter (4.02 / 21:26) (всего 1 раз) | 
  4.02.2015 / 22:13 |  | 
DominaN    Пользователь  
   Сейчас: Offline 
 Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
   | Цитата Kalter:  однако, для того что бы использовать картинку в некоторых методах класса java.awt.Graphics или java.awt.Graphics2D (для рисования, конечно же), необходим java.awt.Imageа зачем использовать такие методы?     | 
  4.02.2015 / 22:15 |  | 
Naik    Пользователь  
   Сейчас: Offline 
 Имя: %name% Регистрация: 14.03.2010
   | Kalter,  Лишний уровень абстракции, можно просто Toolkit.getDefaultToolkit().createImage (source.getSource ()) ; написать вместо
  public static Image castBufferedImageToImage(BufferedImage source) { return Toolkit. getDefaultToolkit () . createImage ( source.getSource ()) ; }
   | 
  4.02.2015 / 22:20 |  | 
Kalter    Пользователь  
   Сейчас: Offline 
 Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
   | DominaN, для рисования на java.awt.Canvas, например.
  Naik, я хотел покороче)
  __________________
   Homo homini penis est.  | 
  5.02.2015 / 00:54 |  | 
DominaN    Пользователь  
   Сейчас: Offline 
 Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
   | Kalter,  Хм. Graphics2D отлично справляется с рисованием BufferedImage на канвасе. Я когда с j2me движок портировал тоже долго привыкал, а теперь вот уже на OpenGL отрисовку перевел
   | 
  5.02.2015 / 04:46 |  | 
kingdosya    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Вашингтон Регистрация: 06.08.2013
   | Цитата Its_Your_Soul: Oak,  Думаю Java 6.Верно
   | 
  5.02.2015 / 08:19 |  | 
vl@volk    Пользователь  
   Сейчас: Offline 
 Имя: Владислав Откуда: Земля Регистрация: 26.12.2012
   | На линукс беда с шрифтами. Они такие как на китайском телефоне.
  __________________
   знает толк  | 
  5.02.2015 / 10:49 |  | 
Naik    Пользователь  
   Сейчас: Offline 
 Имя: %name% Регистрация: 14.03.2010
   | vl@volk,  Америку открыл    Но не везде, в eclipse нормальные шрифты например  | 
  5.02.2015 / 14:18 |  | 
DominaN    Пользователь  
   Сейчас: Offline 
 Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
   | vl@volk, помню я какой-то пакет ставил с виндовскими шрифтами, это вообще популярная проблема. Другое дело, вот помню у меня на семерке шрифты в нетбинсе поплыли жутко, сплошная размазня на экране. Я и нетбинс переустанавливал, и шрифты сносил, и антиалиазинг отключал - все бестолку. А оказалось, надо было в драйвере видеокарты отключить "Интеллектуальное сглаживание".
   |