import javax.microedition.lcdui.Canvas;

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;

import javax.microedition.lcdui.Graphics;

import javax.raicroedition.lcdui.Command;

/*

Рисует серию линий для демонстрации различных типов и стилей линий, которые могут быть нарисованы с помощью класса Graphics.

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

*/

public class LineDemo 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 GraphicsDemo gDemo = GraphicsDemo.getlnstance(};

private Display display = Display.getDisplay(gDemo);

/**

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

*/

public LineDemo()

{

super ();

addCommand(back);

setCommandListener(this);

display.setCurrent(this);

}

/* *

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

"/

protected void paintdipRect (Graphics g)

}

int clipX = g.getClipX ();

int clipY = g.getClipY();

int clipH = g.getdipHeight ();

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)

{

paintdipRect (g);

int width = getWidth();

int height = getHeight ();

g. drawLine (20, 10, width — 20, height — 34);

g. drawLine(20, 11, width — 20, height — 33);

g. drawLine(20, 12, width — 20, height — 32);

g. drawLine(20, 13, width — 20, height — 31);

g. drawLine(20, 14, width — 20, height — 30);

g. setStrokeStyle(Graphics.DOTTED);

g. drawLine(20, 24, width — 20, height — 20);

g. drawLine(20, 25, width — 20, height — 19);

g. drawLine(20, 26, width — 20, height — 18);

g. setStrokeStyle (Graphics.SOLID);

g. drawLine(20, 36, width — 20, height — 8);

}

public void commandAction(Command c, Displayable d)

{

if (c == back)

{

GraphicsDemo.getlnstanceO.display();

}

}

}

Метод paint (Graphics g) является основным в этом примере. Поскольку Canvas описывает этот метод как абстрактный, подклассы должны предоставлять конкретное описание. На экране, созданном программой в листинге 6.2, ничего не появляется, поскольку ее метод paint (Graphics g) не описывает никаких операций по рисованию.

Ваша программа должна выполнять все свои операции по рисованию в методе paint (Graphics g) на объекте Graphics, переданном ей. Вы запускаете стандартные операции по рисованию, предназначенные для класса Graphics, в этом экземпляре, который передан вашему Canvas.

Чтобы нарисовать линию, вы должны указать координаты (х, у) начальной и конечной точек. Координаты (х, у) определяются относительно точки (0, 0), которая, во время создания графического контекста, представляет пиксель, лежащий в верхнем левом углу дисплея, как показано на рисунке 6.3. Координата х определяет горизонтальное расстояние направо от колонки 0 (левый край дисплея), а координата у определяет вертикальное расстояние от строки 0, которая является верхним краем дисплея.

Перейти на страницу:

Похожие книги