Табло
|
Описание апплета Пример работы апплета |
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
public class Tablo extends Applet // Создание класса
{
Dimension d; // Переменная под размеры апплета
Image img; // Исходная картинка
int ImgWidth; //Размеры исходной
int ImgHeigth;//картинки
int pixels[]; // Массив под пикселы картинки
int Red[]; // Вспомогательные массивы
int Green[]; // для хранения каждого из компонентов
int Blue[]; // цвета пикселов
int w, h;
String Pict = "test.jpg"; // картинка по умолчанию
Color bgColor; // Цвет фона
public void init()
{
String param;
//Если параметр задан
param = getParameter("img");
if (param != null)
Pict = param;
// А если параметр отсутствует то берется test.jpg
d = size();
w = d.width;
h = d.height;
// Установка цвета фона
bgColor = new Color(0, 0, 0);
setBackground(bgColor);
try
{
img = getImage(getDocumentBase(), Pict);
MediaTracker t = new MediaTracker(this);
t.addImage (img, 0);
t.waitForID(0);
// Определение размеров картинки
ImgWidth = img.getWidth(null);
ImgHeigth = img.getHeight(null);
// Инициализация массивов
pixels = new int[ImgWidth * ImgHeigth];
Red = new int[ImgWidth * ImgHeigth];
Green = new int[ImgWidth * ImgHeigth];
Blue = new int[ImgWidth * ImgHeigth];
// Класс PixelGrabber определен в пакете java.lang.image.
// Он формирует массив пикселей для существующего изображения
// Сначала создается большой целочисленный массив для хранения данных
// (здесь это pixels). Потом экземпляр класса PixelGrabber (здесь pg).
// И, наконец, для этого экземпляра вызывается grabPixels().
PixelGrabber pg = new PixelGrabber(img, 0, 0, ImgWidth, ImgHeigth, pixels, 0, ImgWidth);
pg.grabPixels();
// Задается само изображение img, координаты, от которых идет расчет 0, 0;
// ширина и высота нужной области ImgWidth, ImgHeigth;
// массив для хранения пикселов pixels, смещение 0; и ширина строки ImgWidth,
}
catch (InterruptedException e)
{
};
for (int i = 0; i < ImgWidth*ImgHeigth; i++)
{
// Заполнение массивов цветов пикселей
Red[i] = 0xff & (pixels[i] >> 16);
Green[i] = 0xff & (pixels[i] >> 8);
Blue[i] = 0xff & (pixels[i]);
}
}
public void update()
{
}
public void paint(Graphics g)
{
// Координата первой лампочки
int y = 2;
int x = 2;
for (int i = 0; i < ImgWidth*ImgHeigth; i++)
{
// Установка цвета очередного круга(лампочки) и ее прорисовка
g.setColor( new Color(Red[i],Green[i],Blue[i]));
g.fillOval(x, y, 4, 4);
x += 4;
if (x > w) // переход на новую строку
{
x = 2;
y += 4;
}
}
}
}