for at fortsætte fra tidligere spørsmål: du tager dit graphics object og tegner på det. Du kan tegne 'delvist gennemsigtigt' ved at sætte color med en alpha værdi. ie new Color(int r, int g, int b, int alpha). Ved for eks. at sætte alpha til hundrede og r, g, b, til en hvid (255, 255, 255) vil du tegne et halvgennemsigtig hvid rectangle hvor man vil kunne se baggrunden.
ok Men hvad så med billeder? Gør jeg bare således: Color minFarve=new Color(255,0,0,50); this.getGraphics().setColor(minFarve); this.getGraphics().drawImage(mitImg,20,20,this); ?
Du kan ikke gøre et billede transparent, hvis det ikke allerede er det. I hvert fald ikke på den måde. Det er sikkert muligt på en-eller-anden måde at gøre et billede transparent (man kunne jo tage en pixelgrabber og simpelthen transformere hver enkelt ikke-alpha pixel til en pixel med en alpha værdi - men der findes sikkert en metode til dette, jeg kender den ikke).
Du skal skelne mellem 2 typer billeder, 1. et billede lavet via createImage og 2. et billede loaded via getImage. Min sidste kommentar var angående et billede loadet via getImage. Hvis det ikke har en alpha værdi allerede får du en del besvær med et lave det om. Omvendt, at lave et billede der har en alpha værdi, det var det først jeg svarede på.
Prøv som sagt at kigge på java.awt.image.PixelGrabber. Den kan tage et billede og du kan få farven for hver enkelt pixel. Dernæst kan du konstruerer et bufferedimage og ændre hver enkelt pixel (fra pixelgrabberen) fra en farve uden alpha til en farve med alpha, og smide den ind i dit bufferedimage. Jeg har ikke prøvet det, og hvis du er relativt ny til java vil jeg nok heller ikke anbefale dig at rode med det. Hvis du skal bruge et transparent billede som du loader (gif/jpg) så lav det transparent i forvejen.
Jeg har kun problemer med delvis transperans - ikke med transperante gif'er. Jeg har ikke arbejdet længe med Java, men til gengeld meget længe med C++ og et par år med JavaScript og PHP - desuden har jeg studeret Java grundigt det sidste år, da det var det sprog vi brugte i faget programmering i gymnasiet. Jeg kigger på pixelgrabber...
Hej igen. Det var ikke min mening at 'forklejne' din erfaring. Det var mere et spørgsmål... Men du burde nok kunne finde ud af pixelgrabber. Et andet spørgsmål er så, om det er det du har brug for. Hvad det er du prøver at lave? ..... Min erfaring med pixelgrabber er, at den er rimelig tung/langsom at arbejde med.
Hehe - det var heller ikke sådan ment - ville bare 'demonstrere' at jeg ikke har noget problem i at lære nyt inden for programmering...
Oki - her er hvad jeg vil lave: Jeg er ved at lave et lille java spil hvor man styrer en figur rundt i en verden af tiles. Jeg vil godt lave det sådan, at man ikke kan se hele verdenen på een gang, men kun det af den der er lige rundt om figuren - resten skal fra tile til tile fade ud - altså jo længere væk fra figuren man kommer, des mere udtonet er mine tiles...
Men så forstår jeg ikke hvorfor du ikke kan bruge det første eksempel. Du laver en eller anden form for layered painting, altså først tegner du din verden (fuld synlig), og oven over denne har du et gennemsigtigt panel el. Kan gøres via setOpaque(false) og dernæst tegner du med en transparent farve over det panel. Det kan lettest gøres med en gradientpaint, hvor du trækker 2 farver, en der ikke er gennemsigtig og en der er fuld gennemsigtig. Så får du en flydende gennemsigtig overgang.
Problemet er at de billeder jeg bruger til tiles ikke e firkantede, men har en trekant i hvert hjørne der er gennemsigtig (transperant gif). Der skal jo ikke males noget på de trekanter...
Jword gav mig en løsning, hvori jeg tegnede en gradient paint (fra sort til gennemsigtig) oven på mit billede - givende den illusion af billedet fader ud.
E-)mil
Synes godt om
Ny brugerNybegynder
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.