Платформа программирования J2ME для портативных устройств

Демонстрационная


import javax.microedition.lcdui.Canvas;

import javax.microedition.Icdui.Command;

import javax.microedition.Icdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.Icdui.Displayable;

import javax.microedition.Icdui.Graphics;

import javax.microedition.Icdui.Command;

/**

Рисует прямоугольники на Canvas с помощью графических методов

в классе javax.microedition.Icdui.Graphics.

@смотри javax.microedition.Icdui.Graphics

*/

public class RectangleDemo extends Canvas



implements CommandListener

{

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

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

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

private Display display =

Display.getDisplay(GraphicsDemo.get!nstance()) ;

/**

Конструктор No-arg. Вызывает конструктор no-arg Canvas.

*/

public RectangleDemo()

}

super () ;

addCommand(back);
setCommandListener(this);

display.setCurrent (this) ;

}

/**

Рисует белый отсекаемый прямоугольник, эффективно стирающий

все, что было отображено на Canvas перед этим.

*/

protected void paintClipRect(Graphics g)

{

int clipX = g.getClipX () ;

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

}

/**

Отображает внешний вид этого подкласса Canvas.

*/

public void paint(Graphics g)

{

paintClipRect(g);

int width = getWidthO; int height = getHeightf);

int xO = 5;

int yO = 5;

int barW = 10;

int initHeight = height - 10;

int deltaH = 10;

g.drawRect(xO, yO, barW, initHeight);

g.fillRect(xO + barW, yO + deltaH, barW, initHeight - deltaH + 1);

g.drawRect(xO + barW " 2, yO + deltaH * 2,

barW, initHeight - deltaH * 2);

g.setColor (255, 00, 00);
g.fillRect(xO + bar» * 3, yO + deltaH * 3,

barW, initHeight - deltaH * 3 + 1) ; g. setColor (0," 0, 0);

g.drawRect(xO + barW * 4, yO + deltaH * 4,



barW, initHeight - deltaH * 4);


g.fillRect(xO + barW * 5, yO + deltaH * 5,

barW, initHeight - deltaH * 5 + 1);


g.drawRect(xO + barW * 6, yO + deltaH * 6,

barW, initHeight - deltaH * 6);
g.fillRect(xO + barW * 1, yO + deltaH * 1,

barW, initHeight - deltaH * 7 + 1);


}

public void commandAction(Command c, Displayable d)

{

if (c == back)

{

GraphicsDemo.getlnstanceO.display!) ;

}

}

}

Дуги. Класс Graphics также поддерживает рисование дуг. Чтобы нарисовать дугу, вы должны указать шесть параметров. Эти параметры включают четыре размера, которые определяют ограничивающий дугу прямоугольник, ее начальный угол и ее конечный угол. Ограничивающий прямоугольник определяется теми же четырьмя параметрами, которые требуются для прямоугольников.

Процедура рисования отслеживает дугу вдоль ее пути от начального угла к конечному углу в направлении против часовой стрелки. Угол в 0 градусов располагается вдоль положительной оси X координатной плоскости. На рисунке 6.6 показаны две дуги, нарисованные методом paint (Graphics g) в листинге 6.5.


Содержание раздела