Avatar billede Simon Praktikant
27. april 2005 - 15:39 Der er 1 løsning

drawImage tegner grimme billeder i 16 bit.

Jeg har har en Java Applet (client) hvor jeg bl.a. benytter nedenstående kode til at tegne et billed fra et Graphics2D objekt. før billedet tegnes skal det vendes én gang om hver akse, eller roteres 180 grader.

Graphics2D gBuf;
gBuf=(Graphics2D)buffer.getGraphics();
gBuf.drawImage(bkGndBufr,0,0,SizeX,SizeY,0,0,SizeX,SizeY,this);

Billedet ser fint ud i både 32 bit og 16 bit.

Nu er det så at jeg vil have vendt billedet en gang om hver akse, og det gør jeg ved at bytte rundt på nogle paarametre:

gBuf.drawImage(bkGndBuffer,0,0,SizeX,SizeY,SizeX,SizeY,0,0,this);

I 32 bit ser billedet rigtigt ud, hvorimod farverne er ændret, og svage og grimme i  16 bit.

Flipper jeg derimod kun billedet om den ene akse, ser det rigtigt ud i både 16 og 32 bit.

gBuf.drawImage(bkGndBuffer,0,0,SizeX,SizeY,SizeX,0,0, SizeY,this);


I stedet for at vende billedet en gang om hver akse har jeg prøvet at rotere det 180 grader, således:

gBuf.rotate(Math.PI, SizeX/2, SizeY/2);
gBuf.drawImage(bkGndBufr,0,0,SizeX,SizeY,0,0,SizeX,SizeY,this);

Dette går også galt i 16 bit.

Er der nogen der har erfaringer med dette, eller har forslag til hvad jeg kan gøre?
Avatar billede Simon Praktikant
19. maj 2005 - 13:03 #1
Hej igen

Jeg har ikke fundet problemets kerne, men jeg har dog fundet en løsning.
Jeg vender billedet om hver akse i to step. dette gør jeg således:
--------------------------------------------------------------------------
Image hugo = createImage(SizeX,SizeY);
Graphics2D gHugo = (Graphics2D)hugo.getGraphics();
gHugo.drawImage(bkGndBuffer,0,0,SizeX,SizeY,0,SizeY,SizeX,0,this);
gBuf.drawImage(hugo,0,0,SizeX,SizeY,SizeX,0,0,SizeY,this);
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