 |
 |
 |
Интернет клуб
Новая страница
Описание html
Javascript
Java в примерах
Что такое JAVA?
Первое приложение на JAVA
Первый апплет на JAVA
Управление шрифтами
Строковые переменные
Работа с массивами
Работа с графикой
Операции с мышкой
Операции с клавиатурой
Структура апплета
Работа с потоками
Передача параметров в апплет
Загрузка изображения в апплет
Контроль за ходом загрузки изображения
Двойная буферизация
Создание изображения из массива данных
Корректировка изображения
Полезные сайты
Задайте вопрос
|
 |
 |
 |
Web-учебник. Раздел 4. Java в примерах.
Контроль за ходом загрузки изображения
Для контроля за ходом получения изображения и, следовательно, для улучшения качества вывода изображения, используется метод imageUpdate() Метод имеет следующий формат:
boolean imageUpdate(Image обьект, флаги, XBeg, YBeg, width, length);
Здесь обьект - загружаемое изображение,
значения параметра флаги приведены в следующей таблице:
| Флаг |
Значение |
| WIDTH |
Ширина изображения |
| HEIGHT |
Высота изображения |
| PROPERTIES |
Свойства изображения можно
получить с помощью метода
imgObj.getProperties() |
| SOMEBITS |
Получен следующий фрагмент изображения. Параметры XBeg,
YBeg, width, length определяют
содержащий его прямоугольник |
| FRAMEBITS |
Получен полный кадр, являющийся
частью многокадрового изображения |
| ALLBITS |
Получено все изображение |
| ERROR |
Произошла ошибка при
выводе изображения -
изображение неполное и не
может быть выведено |
| ABORT |
Передача изображения прервана
до ее завершения. |
Рассмотрим следующее использование метода imageUpdate() . Он находится в состоянии ожидания до полной загрузки изображения, а затем выводится на экран за один раз.
Обратим внимание на метод imageUpdate() .
Если флаг flags имеет состояние ALLBITS (то есть соответствующий бит установлен в 1), что означает, завершение выгрузки изображения, то вызывается метод repaint() для вывода уже подготовленного изображения на экран. Обратите внимание, что установлено первоначальное значение error = false .
В противном случае, когда выгрузка изображения еще не завершена, проверяем установку флагов ABORT и ERROR . Если флажок установлен хотя бы в одно из этих значений, устанавливаем значение error = true и также обращаемся к методу repaint() .
Функция imageUpdate() возвращает значение true , если установлен хотя бы один из флажков : ALLBITS, ABORT, ERROR .
Метод repaint() обращается к методу paint() .
Рассмотрим метод paint() . Если логическая переменная error установлена в true , то есть существуют проблемы с загрузкой изображения, то мы выводим в окно апплета сообщение об ошибке желтого цвета на красном фоне. В противном случае мы выводим требуемое изображение.
//------------------------------------------------------------
// Program : MySecondImage
//------------------------------------------------------------
// Author : Katz Yakov
//------------------------------------------------------------
// Date : 20/01/98
//------------------------------------------------------------
import java.awt.*;
import java.applet.*;
//------------------------------------------------------------
// Создаем апплет MySecondImage
public class MySecondImage extends Applet{
// Обьявляем переменную изображения класса Image
Image picture;
// Переменная error сообщает: произошла ли ошибка
// при загрузке изображения
boolean error = false;
// Переменная для хранения имени файла изображения
String imagename = new String();
// Переопределяем метод init()
public void init() {
// Получаем имя файла изображения из HTML файла
imagename = getParameter("img");
// Загружаем требуемое изображение
picture = getImage(getCodeBase(),imagename);
}
// Определяем метод вывода изображения в окно апплета
public void paint(Graphics gr) {
// Произошла ли ошибка загрузки изображения
if (error) {
// Вывод сообщения об ошибке
gr.setColor(Color.maroon);
gr.fillRect(0, 0, 220, 80);
gr.setColor(Color.yellow);
gr.drawString("Image not found: " + imagename, 20, 40);
}
else {
// Вывод изображения в окно апплета
gr.drawImage(picture, 0, 0, this) ;
}
}
// Переопределяем imageUpdate
public boolean imageUpdate(Image img, int flags,
int x, int y, int w, int h) {
// Проверяем, акончилась ли выгрузка изображения
if ((flags & ALLBITS) != 0) {
repaint();
}
else {
// Проверяем, не произошло ли ошибки
if ((flags & (ABORT|ERROR)) != 0) {
error = true;
repaint();
}
}
// Формируем код возврата из метода
return (flags & (ALLBITS|ABORT|ERROR)) == 0;
}
}
Запишем команду вызова апплета, использующую существующий файл
SHISHKIN.JPG .
<applet code="MySecondImage" width=300 height=430>
<param name=img value=SHISHKIN.JPG>
</applet>
Выполним этот апплет: (В Netscape Вы этот апплет не увидите т. к. здесь передается параметр. Sorry).
Затем запишем команду вызова апплета, использующую несуществующий файл
SEROV.JPG .
<applet code="MySecondImage" width=300 height=430>
<param name=img value=SEROV.JPG>
</applet>
Выполним этот апплет:
|
 |
 |
|
 |
 |