Avatar billede tuidoi Nybegynder
03. oktober 2008 - 09:26 Der er 4 kommentarer og
2 løsninger

2 billeder oven på hinanden i Java?

Hej

Jeg har fundet følgende vejledning til at lægge to billeder ovenpå hinanden i php.
http://www.udvikleren.dk/PHP/Article.aspx/232/
Hvordan gøres dette i Java?
Det jeg godt kunne tænke mig er at billederne ikke blot bliver tegnet med Draw, men bliver oprettet som et objekt jeg kan flytte rundt på.

På forhånd tak for hjælpen! :)
Avatar billede tuidoi Nybegynder
04. oktober 2008 - 01:45 #1
Det kan da ikke passe at det ikke kan lade sig gøre?.
Er det muligt at gøre et JPanel transparant? hvis jeg vidste hvordan man gør dette, så kunne jeg rode lidt videre med det?
Avatar billede arne_v Ekspert
04. oktober 2008 - 03:32 #2
Selvfølgelig kan det laves i Java.

Se f.eks. http://forums.sun.com/thread.jspa?messageID=2394629
Avatar billede tuidoi Nybegynder
04. oktober 2008 - 14:27 #3
Hej arne_v og tak for hjælpen.

Jeg nu rodet rundt med det eksempel du henviser til og fået følgende:

import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.imageio.*;
import javax.swing.*;

public class WaterMark2 {
    public static void main(String[] args) throws IOException {
        //File billedeBane = new File("soccerfield.gif");
        URL billedeBane = new URL("http://www.tmsconsultants.com/soccerfield.gif");
        BufferedImage im = ImageIO.read(billedeBane);
        //File billedeBold = new File("Bold.gif");
        URL billedeBold = new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Soccer_ball.svg/600px-Soccer_ball.svg.png");
        BufferedImage im2 = ImageIO.read(billedeBold);
       
       
        Graphics2D g = im.createGraphics();
        // g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f)); // sætter transparent

        int midtenX = (im.getWidth()-im2.getWidth())/2;
        int midtenY = (im.getHeight()-im2.getHeight())/2;
       
        g.scale(0.05, 0.05); // skalerer bolden ned
        g.drawImage(im2, midtenX, midtenY, null);    /* Her prøver jeg at hente midtenX og midtenY ind for at se om det kunne bringe bolden i midten. */
        g.drawImage(im2, 4480, 3160, null);            /* Hvorfor disse koordinater for at få bolden i midten, de virker "mærkelige". */   

        g.dispose();       
        display(im);
    }

    public static void display(BufferedImage image) {
        JFrame f = new JFrame("Fodboldbane med Bold");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new JLabel(new ImageIcon(image)));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}

Jeg kunne godt tænke mig at vide hvordan jeg får bolden ind i midten afhængig af selve banens bredde og højde efter jeg har skalleret selve bolden?

Og ikke nok med det, så er der også noget andet der undrer mig lidt.
Når jeg nu tegner bolden ovenpå banen som det jo er tilfældet i eksemplet, så er det vel ikke muligt for mig at flytte bolden rundt efterfølgende som jeg jo gerne ville?
vil gerne oprette f.eks. et bold objekt indeholdende metoden flytBold()
hvordan er dette muligt?
Avatar billede tuidoi Nybegynder
04. oktober 2008 - 20:38 #4
Nu har jeg selv løst problemet..

Jeg endte ud med at lave en klasse Fodbold extended fra JPanel også i den lave jeg en metode der hed flytBold() hvor i jeg gav nye koordinater til paintComponent metoden og kaldte repaint().

men ellers tak for hjælpen!
- lig et svar alligevel som tak for noget af hjælpen
Avatar billede arne_v Ekspert
04. oktober 2008 - 22:45 #5
ok
Avatar billede tuidoi Nybegynder
04. oktober 2008 - 23:08 #6
Jeg har delt dem imellem os.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester