PIZiadas گرافیک

PIZiadas گرافیک

دنیای من شوید.

برنامه نویسی گرافیکی: Doblebuffering : قرعه کشی در پس زمینه [جاوا]

doblebufferهنگام ایجاد موتور انیمیشن ما را دیده اند که از سوسو زدن تازه کردن صفحه نمایش تولید نامطلوب. این اثر به زمان مورد نیاز تصویر را حذف و تولید جدید به روز, نتیجه شده از اشیاء متحرک.

Una técnica para evitar esto es la denominada doble buffer o “دoublebuffered, de forma que utilizamos dos imágenes (memorias gráficas) al mismo tiempo. Mientras se dibuja en una, vemos la otra y minimizamos el tiempo de cambio entre las imágenes eliminando el parpadeo.

به محاسبه, el almacenamiento en búfer múltiples es el uso de más de un buffer para mantener un bloque de datos, de modo que unlectorverá una completa versión de los datos, en lugar de una versión parcialmente actualizada de la datos que se crean por unescritor”. También se utiliza para evitar la necesidad de usar la memoria RAM de doble puerto, cuando los lectores y escritores son dispositivos diferentes.(W)

Modificaremos la claseتخته سیاهque hemos modificado para incorporar el موتور انیمیشن para implementar esta técnica. Necesitaremos conocer las dimensiones de la pantalla gráfica para almacenar la suficiente memoria, y definiremos un objeto “تصویر” que será sobre el que dibujaremos los gráficos.

	Dimension d;
	private Image mImage = null;

El métodoرنگde dibujo obtendrá primero el tamaño de la imagen a generar. La llamada a la funcióncheckOffScreenImage()se encargará de asegurarnos un objetomImagesobre el que dibujar.

Para dibujar en este objeto solicitaremos su dirección gráfica con la funcióngetGraphics“. A continuación lo rellenaremos del color que usemos para el fondo dibujando sobre este elemento un rectángulo relleno.

Llamaremos a las rutinas de dibujado de la imagen, que hemos implementado en la funciónpaintOffScreenpasándole este objeto gráfico como parámetro para que lo use como lienzo.

La última función dibujará en pantalla el lienzo o imagen generado.

	public synchronized void رنگ(گرم گرافیک) {
	   d = getSize();
	   checkOffScreenImage();
	   Graphics offG = mImage.getGraphics();
	   offG.setColor(getBackground());
	   offG.fillRect(0, 0, d.width, d.height);
	   paintOffScreen(mImage.getGraphics());
	   g.drawImage(mImage, 0, 0, صفر);
	}

تابع “checkOffScreenImage()se encargará de supervisar si ha cambiado el tamaño de la ventana utilizada para mostrar la información gráfica y generar un objeto sobre el que dibujar, mediante la funcióncreateImage()

	از درجه اعتبار ساقط خصوصی checkOffScreenImage() {
	   Dimension d = getSize();

	   اگر (d.width == 0 || d.height == 0) {
		برگشت;
	   }
	   اگر (mImage == null || mImage.getWidth(صفر) != d.width
	      || mImage.getHeight(صفر) != d.height) {
		mImage = createImage(d.width, d.height);
	   }
	}

تابع “paintOffScreees la antigua función o método “رنگ” que dibuja nuestros objetos gráficos, por lo que no merece comentarios adicionales. Simplemente hemos cambiado su nombre.

	از درجه اعتبار ساقط عمومی paintOffScreen(گرم گرافیک){
	   شمارش شمارشی = bd.elements();
	   OB شی;
	   در حین(enum.hasMoreElements()){
		OB = enum.nextElement();
		اگر(ob instanceof SimpleDrawable){
			((SimpleDrawable) چه).رنگ(گرم);
		}
	   }
	}

Al ejecutar la aplicación veremos que el parpadeo de la imagen ha desaparecido.

JAVA

دوره جاوا