Иллюстрированный самоучитель по Java


           

Он может быть обработан потребителем


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
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий