Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

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);

В первый раз флоппи-диск рисуется с масштабированием, во второй раз - в исходном виде. Компакт-диск вначале рисуется в исходном виде, а затем - растянутым по горизонтали.

[Назад] [Содеожание] [Дальше]