PIZiadas gráficos

PIZiadas gráficos

Meu mundo está dentro.

Programação Gráfica: Doblebuffering : Desenhe no fundo [JAVA]

doblebufferAo criar o mecanismo de animação, temos visto que a cintilação de atualização da tela produz um indesejável. Este efeito deve-se ao tempo necessário para apagar a imagem e gerar uma nova actualização, resultado de objetos animados.

Uma técnica para evitar isso é o chamado buffer duplo ou “doublebuffered, Então, usamos duas imagens (memória gráfica) ao mesmo tempo. Enquanto você está desenhando em um, Vamos ver o outro e minimizar o tempo de comutação entre imagens, eliminando a cintilação.

En informática, buffer múltiplo é o uso de mais de um buffer para manter um bloco de dados, para que um “Leitor” Você verá uma versão completa dos dados, em vez de uma versão parcialmente atualizada dos dados que são criados por um “escritor”. Ele também é usado para evitar a necessidade de usar a memória RAM dual-port, Quando os leitores e escritores são dispositivos diferentes.(W)

Modificaremos a classe “Lousa” que nós modificado para incorporar o motor de animação para implementar essa técnica. Precisamos de saber as dimensões do visor gráfico para armazenar memória suficiente, e definimos um objeto “Imagem” Vai ser sobre o qual irá desenhar gráficos.

	Dimensão d;
	private Imagem de MImage = null;

El método “pintar” desenho que você vai ter primeiro o tamanho da imagem para criar. A chamada para a função “checkOffScreenImage()” será responsável para certificar-se de um objeto “mImage” sobre o sorteio.

Para desenhar este objeto que solicitaremos seu endereço de gráfico com a função “M:Microsoft.WindowsMobile.DirectX.Direct3D.Surface.getGraphics“. Depois enchemos a cor usada para desenhar um retângulo preenchido neste elemento de fundo.

Vamos chamar as rotinas de imagem desenhada, que eu implementei na função “paintOffScreen” passando este gráfico como um objeto de parâmetro, então você pode usá-lo como uma tela.

A última função irá desenhar na tela da lona ou gerado imagem.

	public void sincronizado pintar(Graphics g) {
	   d = getSize();
	   checkOffScreenImage();
	   Gráficos offG = mImage.getGraphics();
	   offG.setColor(getBackground());
	   offG.fillRect(0, 0, d.Width, d.Height);
	   paintOffScreen(mImage.getGraphics());
	   g.drawImage(mImage, 0, 0, zero);
	}

Função “checkOffScreenImage()” Ele irá supervisionar se você mudou o tamanho da janela usada para exibir informações gráficas e gerar um objeto no qual desenhar, usando a função “createImage()

	private void checkOffScreenImage() {
	   Dimensão d = getSize();

	   se (d.Width = = 0 || d.Height = = 0) {
		voltar;
	   }
	   se (mImage = = null || mImage.getWidth(zero) != d.width
	      || mImage.getHeight(zero) != d.height) {
		mImage = createImage(d.Width, d.Height);
	   }
	}

Função “paintOffScree” é a antiga função ou método “pintar” Ele desenha nossos objetos gráficos, Então não merece comentários adicionais. Nós simplesmente mudaram seu nome.

	public void paintOffScreen(Graphics g){
	   Enumeração enum = bd.elements();
	   Objeto ob;
	   enquanto(enum.hasMoreElements()){
		ob = enum.nextElement();
		se(ob instanceof SimpleDrawable){
			((SimpleDrawable) se).pintar(g);
		}
	   }
	}

Quando você executar o aplicativo, vamos ver o piscar da imagem desapareceu.

JAVA

Curso JAVA