| Назад 9.10. Внеэкранное изображениеСоздав изображение в оперативной памяти
    методом createImage вы впоследствии сможете получить
    для него внеэкранный контекст отображения. С
    помощью такого констекста нетрудно подготовить
    изображение в памяти, рисуя на нем как в обычном
    окне, а затем методом drawImage вывести готовое
    внеэкранное изображение в окно аплета или
    автономного приложения. Данный пример
    демонстрирует использование описанной методики. Исходный текст примера Архив проекта для Java WorkShop 2.0  Демонстрация(ваш браузер должен уметь работать с аплетами
    Java JDK 1.1)
 Немного теорииВнеэкранные изображения часто применяются в
    анимационных приложениях для устранения
    мерцания. При этом изображение готовится в
    оперативной памяти в несколько приемов, а затем
    рисуется в окне приложения за один вызов метода
    drawImage.  Как подготовить внеэкранное изображение?  Для создания такого изображения следует
    воспользоваться методом createImage, как это показано
    ниже:  Image img;
img = createImage(200, 200); Здесь создается пустое изображение размером 200
    x 200 пикселов.  Далее нужно получить так называемый
    внеэкранный контекст отображения, связанный с
    этим изображением:  Graphics gOff = img.getGraphics(); Вы можете рисовать в таком контексте, как в
    обычном.  Когда внеэкранное изображение будет
    подготовлено, его можно нарисовать в окне
    приложения методом drawImage.  Описание примераНаш аплет готовит внеэкранное изображение и
    выводит его в своем окне, как это показано на рис.
    1.   
 Рис. 1. Готовое внеэкранное изображение
    нарисовано в окне аплета  Рассмотрим исходный текст аплета.  Главный класс аплета MemoryImgВ главном классе аплета, созданном на базе
    класса Applet, мы определили поля img и img1 класса Image:  import java.awt.*;
import java.applet.*;
import java.awt.image.*;
public class MemoryImg extends Applet
{
  Image img;
  Image img1;
  . . .
}Перове из них служит для хранения обычного
    изображения, загруженного из файла с именем img1.jpg,
    а второе - хранит ссылку на внеэкранное
    изображение, созданное нашим аплетом.  Метод initПервым делом при инициализации метод init
    создает внеэкранное изображение размером 200 x 200
    пикселов:  img = createImage(200, 200); Далее он загружает изображение из файла img1.jpg:  img1 = getImage(getCodeBase(), "img1.jpg"); Окончание этого процесса ожидается с помощью
    класса MediaTracker:  MediaTracker mt = new MediaTracker(this);
mt.addImage(img1, 0);  
try
{
  mt.waitForAll();
}
catch(InterruptedException ie)
{
  return;
}Метод paintКогда окно аплета перерисовывается, метод paint
    получает внеэкранный контекст отображения,
    связанный с изображением img:  Graphics gOff = img.getGraphics(); Далее он выполняет в этом контексте несколько
    обычных операций рисования - закрашивание всего
    изображения желтым цветом, рисование красной
    строки и рисование растрового изображения img1:  gOff.setColor(Color.yellow);
gOff.fillRect(0, 0, 200, 200);    
    
gOff.setColor(Color.red);
gOff.drawString("Off-screen image", 10, 30);
    
gOff.drawImage(img1, 10, 80, this);На последнем шаге готовое внеэкранное
    изображение рисуется в окне аплета методом drawImage:
     g.drawImage(img, 0, 0, this); 
 Назад |