Java 2 Micro Edition (J2ME)


Двойная буферизация - часть 2


для отображения в Canvas.

public class DoubleBufferDerao extends Canvas

implements CommandListener

{

// Константа, которая представляет белый цвет.

private static final int WHITE = OxFF « 16 I OxFF « 8 | OxFF;

private static Command back = new Command("Back", Command.BACK, 1);

GraphicsDemo gDemo = GraphicsDemo.getlnstance();

private Display display = Display.getDisplay(gDemo);

// Объект изображения, используемый для получения

// внеэкранного объекта Graphics, private Iraage offscreen;

// Переменная, используемая для определения того, осуществляет

// ли реализация автоматическую двойную буферизацию.

// Сохраняет значение true, если реализация автоматически

// осуществляет двойную буферизацию, иначе становится

false. private boolean autoDoubleBuffered = true;

/**

Конструктор No-arg.

* /

public DoubleBufferDemo()

super();

addCoramand(back); setCommandListener(this); display.setCurrent(this);

if ( ! isDoubleBufferedO )

{

// Если реализация не использует двойную буферизацию

// автоматически, извлеките Image для того, чтобы мы могли

// получить из него внеэкранный Graphics. Этот Image изменяемый!

// Его размерами являются высота и ширина данного Canvas.

offscreen = Image.createlmage(getWidth (),

getHeight () ) ;

autoDoubleBuffered = false;

}

)

protected void paintdipRect (Graphics g)

int clipX = g.getClipX() ;

ir.t clipY = g.getClipY() ;

int clipH = g.getClipHeight();

int clipW = g.getClipWidth();

int color = g.getColor ();

g.setColor (WHITE);

g.fillRect(clipX, clipY, clipW, clipH);

g,setColor(color);

}

public void paint(Graphics g)

}

Graphics originalG = null;

int width = getWidthf); int height = getHeight ();

if (!autoDoubleBuffered)

}

// Сохраняем первоначальный графический контекст и получаем

// новый внеэкранный Graphics из утилиты Image.

originalG = g;

g = offscreen.getGraphics ();

// Очищаем отсекаемый прямоугольник с помощью нового объекта

// Graphics. Таким образом, мы используем двойную буферизацию




Начало  Назад  Вперед



Книжный магазин