PIZiadas GRÁFICAS

PIZiadas GRÁFICAS

Мой мир дюйма.

Графического программирования: Doblebuffering : Ничья в фоновом режиме [JAVA]

doblebufferПри создании анимации движка мы уже наблюдали, что обновление экрана происходит мерцание нежелательно. Этот эффект достигается за счет времени, необходимого для удаления этого изображения и генерировать новый обновленный, Результатом одушевленные предметы.

Одним из способов избежать этого называется Доубла буфера O “реoublebuffered, используются так, что два изображения (видеопамяти) в то же время. С опорой на, увидеть другую и минимизировать время переключения между изображениями устраняя мерцание.

В вычисление, нескольким буферизации является использование более чем одного буфер для поддержания блока данных, таким образом, чтобы “читатель” см. полную версию данных, а частично обновленной версии данных, который создается “писатель”. Он также используется, чтобы избежать необходимости в использовании двойного ОЗУ, когда читатели и писатели разных устройствах.(W)

Будет ли изменить класс “Классная доска” Мы модифицированы включением анимация двигатель реализовать этот метод. Нам нужно будет знать размеры графического дисплея достаточно памяти для хранения, и определить объект “Изображение” будет, на котором мы рисуем графики.

	Размер D;
	частный Изображение mImage = NULL;

Метод “краска” чертеже первый размер, чтобы генерировать. Вызов функции “checkOffScreenImage()” уверен, будет обрабатывать объект “mImage” опираться на.

Чтобы нарисовать на этом объекте запроса электронной графика с функцией “GetGraphics“. Тогда какой цвет наполнит нас использовать для фона по этому пункту рисования прямоугольника с заливкой.

Подпрограммы буду называть нанесения изображения, мы внедрили в функции “paintOffScreen” прохождение этого объекта в качестве параметра диаграммы для использования в качестве холста.

Последняя функция обращается в холсте или экране графики.

	общественного синхронизированы недействительными краска(Графика г) {
	   D = GetSize();
	   checkOffScreenImage();
	   Графика offG = mImage.getGraphics();
	   offG.setColor(getBackground());
	   offG.fillRect(0, 0, d.width, d.height);
	   paintOffScreen(mImage.getGraphics());
	   g.drawImage(mImage, 0, 0, нулевой);
	}

Функция “checkOffScreenImage()” будет контролировать, если вы изменили размер окна используются для отображения графической информации и создания объекта, на котором рисовать, с помощью функции “CreateImage()

	частных недействительным checkOffScreenImage() {
	   Размер D = GetSize();

	   если (d.width == 0 || d.height == 0) {
		возврат;
	   }
	   если (mImage == NULL || mImage.getWidth(нулевой) != D.width
	      || mImage.getHeight(нулевой) != D.height) {
		mImage = CreateImage(d.width, d.height);
	   }
	}

Функция “paintOffScree” это старая функция или метод “краска” графики рисовать наш объектов, поэтому она не заслуживает дополнительных комментариев. Мы просто поменяли свое имя.

	общественного недействительными paintOffScreen(Графика г){
	   Перечень перечисление = bd.elements();
	   Объект OB;
	   в то время как(enum.hasMoreElements()){
		OB = enum.nextElement();
		если(OB InstanceOf SimpleDrawable){
			((SimpleDrawable) ли).краска(грамм);
		}
	   }
	}

При запуске приложения вы увидите, что изображение больше нет мерцания.

JAVA

Курс JAVA