Он может быть обработан потребителем
MemoryimageSource.
Он может быть обработан потребителем или прямо преобразован в тип Image методом
createlmage ().
В листинге 15.1 приведена простая программа, выводящая на экран квадрат размером 100x100 пикселов. Левый верхний угол квадрата синий, левый нижний — красный, правый верхний — зеленый, а к центру квадрата цвета перемешиваются.
Листинг 15.1.
Изображение, построенное по точкам
import java.awt.*;
import j ava.awt.event.*;
import java.awt.image.*;
class InMemory extends Frame {
private int w = 100, h = 100;
private int[] pix = new int[w * h];
private Image img;
InMemory(String s)( super(s);
int
i =
0;
for (int у = 0; у < h; y++){
int red = 255 * у / (h - 1);
for (int x = 0; x < w; x++){
int green = 255 * x / (w — 1) ;
pix[i++] = (255 << 24)|(red << 16)|(green << 8)| 128; } }
setSize(250, 200);
setVisible(true);
}
public vqid paint(Graphics gr){
if (img == null)
img = createlmage(new MemoryImageSource<w, h, pix> 0, w));
gr.drawlmage(img, 50, 50, this);
}
public static void main(String[] args){
Frame f= new InMemory(" Изображение в памяти");
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit (0);
}
});
}
}
В листинге 15.1 в конструктор класса-поставщика MemoryimageSource (w, h, pix, о, w) заносится ширина w и высота h изображения, массив pix, смещение в этом массиве о и длина строки w. Потребителем служит изображение img, которое создается методом createlmage () и выводится на экран методом drawlmage(img, 50, 50, this). Левый верхний угол изображения img располагается в точке (50, 50) контейнера, а последний аргумент this показывает, что роль imageObserver играет сам класс InMemory. Это заставляет включить в метод paint о проверку if (img == null), иначе изображение будет постоянно перерисовываться. Другой способ избежать этого — переопределить метод imageupdate (), о чем говорилось в
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий