Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Revision as of 12:21, 3 November 2013 by lpvalente (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Como ajustar uma imagem ao tamanho da tela

From Wiki
Jump to: navigation, search
Article Metadata

Artigo
Tradução:
Por maiconherverton
Última alteração feita por lpvalente em 03 Nov 2013

Screens22.jpg

Se quisermos usar uma imagem como fundo em uma aplicação J2ME, temos o problema de ter uma imagem para cada tamanho de tela diferente. Outra abordagem é ter apenas uma imagem e ajustá-la para todos os tamanhos de tela. Neste artigo irei descrever um algoritmo para fazer isso.

Descrição do metódo

Nome do método CreateScaledImage
Parâmetros
imgOldImage Imagem que temos que encaixar
iNewWidth A nova largura da imagem
iNewHeight A nova altura da imagem
Retorne o valor
Nova imagem com o novo tamanho

Código

public static Image CreateScaledImage( Image imgOldImage, int iNewWidth, int iNewHeight  )
{
 
Image imgNewImage = null;
final int iOldWidth = imgOldImage.getWidth();
final int iOldHeight = imgOldImage.getHeight();
 
int iOldRGBArray[] = new int[iOldWidth * iOldHeight];
 
imgOldImage.getRGB( iOldRGBArray, 0, iOldWidth, 0, 0, iOldWidth, iOldHeight);
 
int iNewRGBArray[] = new int[iNewWidth * iNewHeight];
 
for (int yy = 0; yy < iNewHeight; yy++)
{
int dy = yy * iOldHeight / iNewHeight;
 
for (int xx = 0; xx < iNewWidth; xx++)
{
int dx = xx * iOldWidth / iNewWidth;
 
iNewRGBArray[(iNewWidth * yy) + xx] = iOldRGBArray[(iOldWidth * dy) + dx];
}
}
 
imgNewImage = Image.createRGBImage(iNewRGBArray, iNewWidth, iNewHeight, true);
 
return imgNewImage;
 
}

Exemplo

Nós poderíamos usar esse método em um objeto do tipo Canvas, da seguinte maneira:

public class MyCanvas extends GameCanvas
{
private Image objBKGImage = null;
 
public void paint(Graphics g)
{
 
 
iViewH = this.getHeight();
iViewW = this.getWidth();
 
 
 
// carrega o background da imagem
if (objBKGImage== null)
{
try
{
 
objBKGImage = Image.createImage("/res/Logo_150_53.png");
 
objBKGImage = CreateScaledImage(objBKGImage, iViewW, iViewH)
 
} catch (IOException ex)
{
ex.printStackTrace();
}
}
 
 
 
// desenha o background
if (objBKGImage!= null)
g.drawImage(objBKGImage,
(int)iViewW / 2,
(int)iViewH / 2,
Graphics.VCENTER | Graphics.HCENTER );
 
}
}
This page was last modified on 3 November 2013, at 12:21.
191 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×