Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 2© Александр Фролов, Григорий ФроловТом 32, М.: Диалог-МИФИ, 1997, 288 стр. Приложение ImageDrawТеперь мы знаем все необходимое, чтобы приступить к рисованию растровых изображений в окне аплета. Приложение ImageDraw, о котором мы сейчас расскажем, рисует в своем окне четыре изображения: два изображения флоппи-диска и два - компакт-диска (рис. 4.1).
Рис. 4.1. Рисование растровых изображений в окне приложения ImageDraw В верхнем левом углу окна аплета нарисованы исходные изображения. Справа вверху изображение компакт-диска нарисовано растянутым по горизонтали. Нижнюю часть окна аплета занимает пропорционально увеличенный рисунок флоппи-диска. Исходные тексты приложенияИсходный текст приложения ImageDraw вы найдете в листинге 4.1. Листинг 4.1. Файл ImageDraw\ImageDraw.java
// =========================================================
// Рисование растровых изображений
//
// (C) Фролов А.В, 1997
//
// E-mail: frolov@glas.apc.org
// WWW: http://www.glasnet.ru/~frolov
// или
// http://www.dials.ccas.ru/frolov
// =========================================================
import java.applet.*;
import java.awt.*;
public class ImageDraw extends Applet
{
// Изображение флоппи-диска
Image FloppyDiskImg;
// Изображение компакт-диска
Image CDDiskImg;
// -------------------------------------------------------
// getAppletInfo
// Метод, возвращающей строку информации об аплете
// -------------------------------------------------------
public String getAppletInfo()
{
return "Name: ImageDraw\r\n" +
"Author: Alexandr Frolov\r\n" +
"E-mail: frolov@glas.apc.org" +
"WWW: http://www.glasnet.ru/~frolov" +
"Created with Microsoft Visual J++ Version 1.0";
}
// -------------------------------------------------------
// init
// Метод init, получает управление
// при инициализации аплета
// -------------------------------------------------------
public void init()
{
// Загружаем изображение флоппи-диска
FloppyDiskImg = getImage(getCodeBase(), "disk.gif");
// Загружаем изображение флоппи-диска
CDDiskImg = getImage(getCodeBase(), "cd.gif");
}
// -------------------------------------------------------
// paint
// Метод paint, выполняющий рисование в окне аплета
// -------------------------------------------------------
public void paint(Graphics g)
{
// Определяем текущие размеры окна аплета
Dimension dimAppWndDimension = size();
// Выбираем в контекст отображения белый цвет
g.setColor(Color.white);
// Закрашиваем внутреннюю область окна аплета
g.fillRect(0, 0,
dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
// Выбираем в контекст отображения черный цвет
g.setColor(Color.black);
// Рисуем рамку вокруг окна аплета
g.drawRect(0, 0,
dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
// Рисуем увеличенное изображение флоппи-диска
g.drawImage(FloppyDiskImg, 25, 42, 200, 200, this);
// Рисуем нормальное изображение флоппи-диска
g.drawImage(FloppyDiskImg, 25, 3, this);
// Рисуем нормальное изображение компакт-диска
g.drawImage(CDDiskImg , 70, 3, this);
// Рисуем вытянутое изображение компакт-диска
g.drawImage(CDDiskImg , 115, 3, 40, 25, this);
}
}
Листинг 4.2 содержит исходный текст документа HTML, созданный для нашего аплета автоматически системой Microsoft Visual J++. Листинг 4.2. Файл ImageDraw\ImageDraw.html
<html>
<head>
<title>ImageDraw</title>
</head>
<body>
<hr>
<applet
code=ImageDraw.class
id=ImageDraw
width=320
height=250 >
</applet>
<hr>
<a href="ImageDraw.java">The source.</a>
</body>
</html>
Описание исходных текстовВ главном классе нашего аплета определено два поля и несколько методов. Рассмотрим эти поля и самые важные методы. Поля класса ImageDrawВ классе ImageDraw определено два поля: Image FloppyDiskImg; Image CDDiskImg; В первом из них хранится ссылка на изображение флоппи-диска, во втором - ссылка на изображение компакт-диска. Метод initМетод init создает два объекта класса Image для файлов disk.gif и cd.gif: FloppyDiskImg = getImage(getCodeBase(), "disk.gif"); CDDiskImg = getImage(getCodeBase(), "cd.gif"); В качестве первого параметра методу getImage передается адрес URL аплета, полученный при помощи метода getCodeBase. При этом предполагается, что файлы disk.gif и cd.gif находятся в том же каталоге, что и аплет. Метод paintПосле раскрашивания окна аплета в белый цвет и рисования вокруг окна черной рамки метод paint вызывает четыре раза метод drawImage, рисуя изображения флоппи-диска и компакт-диска: g.drawImage(FloppyDiskImg, 25, 42, 200, 200, this); g.drawImage(FloppyDiskImg, 25, 3, this); g.drawImage(CDDiskImg , 70, 3, this); g.drawImage(CDDiskImg , 115, 3, 40, 25, this); В первый раз флоппи-диск рисуется с масштабированием, во второй раз - в исходном виде. Компакт-диск вначале рисуется в исходном виде, а затем - растянутым по горизонтали. |


