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); В первый раз флоппи-диск рисуется с масштабированием, во второй раз - в исходном виде. Компакт-диск вначале рисуется в исходном виде, а затем - растянутым по горизонтали. |