18
J2ME

API de Bajo Nivel

Embed Size (px)

Citation preview

J2ME

Clase

para representar objetos grficos. Permite manejar eventos de bajo nivel y dibujar cualquier tipo de elemento grafico en pantalla. Capaz de mostrar informacin grfica a nivel de pixel (de ah se deriva el bajo nivel) Bsicamente se pueden realizar 3 operaciones Dibujar primitivas grficas.

Commands (Alto nivel)

Key Codes (Bajo nivel) 0-9, *, #. (gestin de pulsacin) Tecla Numero simblico.

Mtodos Abstractos(manejo de teclas)

Soporte

de dispositivo puntero:

boolean hasPointerEvents(): Posee? boolean hasPointerMotionEvents(): Detecta?

Si

posee deteccin de eventos (mtodos abstractos):

Una

pantalla Canvas no posee la capacidad por s misma de restaurar su estado en caso de interrumpirse la ejecucin de la aplicacin para, por ejemplo, avisar de una llamada entrante.

Respuesta: hideNotify(): antes de ocurrir el evento

(incluir cdigo necesario para salvar la informacin actual)

Funciones

del API de bajo nivel:

Controlar los eventos de bajo nivel. Controlar qu aparece en pantalla.

Gestin Mtodo

de dibujo en pantallaabstracto paint() de la clase

canvas. Para repintar, se llama al metodo repaint(). El MID no limpia la pantalla antes de llamar a paint(): Es accin del paint() pintar cada pixel.

Pasada

como parmetro de paint(Graphics g). Permite dibujar en una pantalla Canvas. Mtodos de uso u obtencin: Dentro del mtodo paint() de la clase

Canvas. A partir de un objeto Image:

Image img = Image.createImage(ancho, alto); Graphics g = img.getGraphics();

Canvas

posee dos mtodos:

getWidth(): Obtiene ancho de la pantalla. getHeight(): Obtiene el alto de la pantalla.

Posicion

de puntos: (,)

Esquina superior izquierda: (0,0) Esquina inferior derecha (getWidth()-1,

getHeight()-1)

Cambio

de origen:

Mtodo translate(int x, int y) de la clase

Graphics.

Existen

dos mtodos tiles:

boolean Display.isColor(): true=color,

false=gris. int Display.numColors(): Numero de colores o grises Modelo

de color de 24 bits en RGB (Graphics) Mtodo setColor() int Graphics.setColor(int RGB) int Graphics.setColor(int rojo, int verde, int azul) ->Max 255 g.setColor(0,0,0); //Negro

Permite seleccionar tipo de letra en funcin de 3 atributos: aspecto, estilo y tamaoFuentes disponibles Aspecto Atributos FACE_SYSTEM FACE_MONOSPACE FACE_PROPORTIONAL STYLE_PLAIN Estilo STYLE_BOLD STYLE_ITALIC STYLE_UNDERLINED SIZE_SMALL Tamao SIZE_MEDIUM SIZE_LARGE

Sintaxis:

Font.getFont(int aspecto, int estilo, int tamao)

Graphics g; Font fuente=Font.getFont(FACE_SYSTEM, STYLE_PLAIN, SIZE_MEDIUM); g.setFont(fuente); g.drawString(Hola mundo, 23 , 45, BASELINE|HCENTER)

Lneas g.drawLine(x1,y1,x2,y2); //Lnea de (x1,y1) a

(x2,y2)

Rectngulos Planos g.drawRect(x,y,ancho,alto); //sin relleno g.fillRect(x,y,ancho,alto); //con relleno Redondeados g.drawRoundRect(x,y,ancho,alto,arcoAncho,arcoAlto); g.fillRoundRect(x,y,ancho,alto,arcoAncho,arcoAlto);

Arcos Simple: g.drawArc(x1,y1,x2,y2,1, 2 ); Relleno: g.fillArc(x1,y1,x2,y2,1, 2 );

Inmutables Image img = createImage(foto.png); Se crean a partir de un mapa de bits. No se puede variar su aspecto.

Mutables Image img =

Image.createImage(75,25); Se trabaja sobre una matriz de puntos. Podemos crear, modificar, etc. La imagen deseada

Mostrar imagen Graphics.drawImage(imagen,x,y,punto

Double

buffering:

Elimina el parpadeo al actualizar la

pantalla. Clave: actualizar las grficas en memoria principal y volcar a pantalla. boolean isDoubleBuffered() true: Dispositivo utiliza la tcnica. false: Hay que implementar el double buffer.

1)

Crear una imagen mutable del tamao de la pantallaImage pantalla2; if(!isBuffered()){ pantalla2=Image.createImage(getWidth(), getHeight()); }

2)

Implementar paint(Graphics g) adecuadamenteprotected void paint(Graphics g){ Graphics pantalla1 = g; g= pantalla.getGraphics(); //actualizar elementos grficos sobre g //volcar a la pantalla para visualizar

Clipping Clave: Actualizar solo la parte que se haya

modificado. Se puede definir una regin que limte qu parte de la pantalla se pintar al llamar a paint() void setClip(int x, int y, int ancho, int alto)

Solo puede existir una zona de clipping por

cada objeto Graphics. Otros mtodos: