Как установить фоновое изображение в Java?

Группировка предметов очень проста с помощью Xamarin Forms. Это сообщение в блоге показывает вам, как настроить свой код, чтобы вы могли создать сгруппированный ListView: http://motzcod.es/post/94643411707/enhancing-xamarinforms-listview-with-grouping

22
задан Dew 7 February 2009 в 16:30
поделиться

3 ответа

Ответ будет варьироваться немного в зависимости от того, используют ли приложение или апплет AWT или Swing.

пј €Basically, классами, которые запускаются с J такой как JApplet и JFrame, является Swing, и Applet, и Frame AWT.)

В любом случае, основные шаги были бы:

  1. Рисуют или загружают изображение в Image объект.
  2. Тянут фоновое изображение в событии рисования Component, Вы хотите потянуть знания в.

Шаг 1. , Загружающий изображение, может быть или при помощи Toolkit класс или ImageIO класс.

Toolkit.createImage метод может использоваться для загрузки Image от местоположения, указанного в String:

Image img = Toolkit.getDefaultToolkit().createImage("background.jpg");

Точно так же ImageIO может использоваться:

Image img = ImageIO.read(new File("background.jpg");

Шаг 2. метод рисования для Component, который должен получить фон, должен будет быть переопределен и краска Image на компонент.

Для AWT, метод для переопределения paint метод и использование drawImage метод Graphics объект, который вручен в paint метод:

public void paint(Graphics g)
{
    // Draw the previously loaded image to Component.
    g.drawImage(img, 0, 0, null);

    // Draw sprites, and other things.
    // ....
}

Для Swing, метод для переопределения paintComponent метод JComponent , и потяните Image как с тем, что было сделано в AWT.

public void paintComponent(Graphics g)
{
    // Draw the previously loaded image to Component.
    g.drawImage(img, 0, 0, null);

    // Draw sprites, and other things.
    // ....
}

Простой Пример Компонента

Вот Panel, который загружает файл изображения при инстанцировании и рисовании того изображения на себе:

class BackgroundPanel extends Panel
{
    // The Image to store the background image in.
    Image img;
    public BackgroundPanel()
    {
        // Loads the background image and stores in img object.
        img = Toolkit.getDefaultToolkit().createImage("background.jpg");
    }

    public void paint(Graphics g)
    {
        // Draws the img to the BackgroundPanel.
        g.drawImage(img, 0, 0, null);
    }
}

Для получения дополнительной информации о рисовании:

28
ответ дан coobird 29 November 2019 в 05:24
поделиться

Во-первых создайте новый класс, который расширяется WorldView класс. Я назвал свой новый класс Background. Таким образом в этом новом импорте класса все пакеты Java Вам будет нужно для переопределения paintBackground метод. Это должно быть:

import city.soi.platform.*;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.ImageObserver;
import javax.swing.ImageIcon;
import java.awt.geom.AffineTransform;

Затем после имени класса удостоверяются, что, поскольку оно говорит, расширяется WorldView. Что-то вроде этого:

public class Background extends WorldView

Тогда объявляют игру переменных типа Game и переменную изображения типа Image что-то вроде этого:

private Game game;
private Image image;

Тогда в конструкторе этого класса удостоверяются, что игра типа Game находится в подписи конструктора и что в вызове к [1 114] необходимо будет инициализировать эти WorldView, инициализировать игру и инициализировать переменные изображения, что-то вроде этого:

super(game.getCurrentLevel().getWorld(), game.getWidth(), game.getHeight());
this.game = game;
bg = (new ImageIcon("lol.png")).getImage();

Тогда Вы просто переопределяете paintBackground метод точно таким же образом, как Вы сделали при переопределении paint метод в Player класс. Точно так же, как это:

public void paintBackground(Graphics2D g)
{
float x = getX();
float y = getY();
AffineTransform transform = AffineTransform.getTranslateInstance(x,y);
g.drawImage(bg, transform, game.getView());
}

Теперь наконец необходимо объявить ссылку уровня класса на новый класс, который Вы просто сделали в Game класс, и инициализируйте это в Game конструктор, что-то вроде этого:

private Background image;

And in the Game constructor:
image = new Background(this);

Наконец все, что необходимо сделать, добавляют предпосылки к кадру! Это - вещь, я уверен, что мы все отсутствовали. Чтобы сделать это, необходимо сделать что-то вроде этого после того, как переменная frame была объявлена:

frame.add(image);

Удостоверяются, что Вы добавляете этот код незадолго до frame.pack();. Также удостоверьтесь, что Вы используете фоновое изображение, которое не является слишком большим!

Теперь вот именно! Я заметил, что игровые механизмы могут обработать JPEG и форматы изображения PNG, но могли также поддерживать других. Даже при том, что это помогает включать фоновое изображение в Вашу игру, это не прекрасно! Поскольку, как только Вы переходите к следующему уровню, все Ваши платформы и спрайты невидимы и все, которое Вы видите, Ваше фоновое изображение и любой JLabels/Jbuttons, который Вы включали в игру.

1
ответ дан Jason Plank 29 November 2019 в 05:24
поделиться

Путь - это единственное, о чем вам действительно нужно беспокоиться, если вы действительно новичок в Java. Вам нужно перетащить ваше изображение в основной файл проекта, и оно будет отображаться в самом низу списка.

Тогда путь к файлу довольно прост. Этот код входит в конструктор для класса.

    img = Toolkit.getDefaultToolkit().createImage("/home/ben/workspace/CS2/Background.jpg");

CS2 - это название моего проекта, и все, что до этого привело к рабочей области.

-1
ответ дан Ben Whithead 29 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: