Download presentation
Presentation is loading. Please wait.
1
Kjava Programming
2
Low Level UI 디바이스의 세밀한 제어 이식성 부족 Canvas Graphics 그래픽작업 수행
Low Level Event 처리 Graphics 텍스트,이미지,도형등의 표시
3
Canvas Abstract class Displayable Paint() method
Low-level UI를 사용하려는 class 는 Canvas를 상속
4
Graphics J2SE의 Graphics와 유사 주요 그래픽함수
Void drawChar(char character, int x, int y, int anchor) Void drawImage(Image img, int x, int y, int anchor) Void drawLine(int x1, int y1, int x2, int y2) Void drawRect(int x, int y, int width, int height) Void drawString(String str, int x, int y, int anchor) Void setColor(int RGB) Void setGrayStyle(int value)
5
Color Low level API는 24bit(8,8,8) Color 지원 모든 장치에서 같은 색이 나온다는 보장 없음
Display.isColor() Color지원여부 검사 Display.numColor() 지원되는 색상수 검사
6
DeviceTest.java import javax.microedition.midlet.*;
import javax.microedition.lcdui.*; public class DeviceTest extends MIDlet{ private Display display; private Form s1; private StringItem x,y,iscolor,numcolor; private DeviceTestCanvas cv; public DeviceTest(){ s1=new Form("Screen1"); x=new StringItem("MaxX:",""); y=new StringItem("MaxY:",""); iscolor=new StringItem("Color:",""); numcolor=new StringItem("NumColor:",""); cv=new DeviceTestCanvas(); s1.append(x); s1.append(y); s1.append(iscolor); s1.append(numcolor); display=Display.getDisplay(this); }
7
DeviceTest.java public void startApp() throws MIDletStateChangeException { x.setText(cv.getWidth()+""); y.setText(cv.getHeight()+""); if(display.isColor()) iscolor.setText("True"); else iscolor.setText("False"); numcolor.setText(display.numColors()+""); display.setCurrent(s1); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} class DeviceTestCanvas extends Canvas{ public DeviceTestCanvas(){ public void paint(Graphics g){
8
DeviceTest.java
9
ColorTest import javax.microedition.midlet.*;
import javax.microedition.lcdui.*; public class ColorTest extends MIDlet{ private Display display; public ColorTest(){ display=Display.getDisplay(this); } public void startApp() throws MIDletStateChangeException { display.setCurrent(new ColorTestCanvas(display.isColor())); public void pauseApp() {} public void destroyApp(boolean unconditional) {} class ColorTestCanvas extends Canvas{ boolean isColor; public ColorTestCanvas(boolean _isColor){ isColor=_isColor; public void paint(Graphics g){ int width=this.getWidth(); int height=this.getHeight(); int nrow=8; int ncol=8; int gap=3; int deltaX=(width-(ncol+1)*gap)/ncol; int deltaY=(height-(nrow+1)*gap)/nrow;
10
ColorTest if(true){ g.setColor(0xFFFFFF);
g.fillRect(0,0,width,height); int deltaColor=0xFF/4; int red=0; int green=0; int blue=0; for(int i=0;i<nrow;i++){ for(int j=0;j<ncol;j++){ red+=deltaColor; if(red>0xFF){ red-=0xFF; green+=deltaColor; if(green>0xFF){ green-=0xFF; blue+=deltaColor; } g.setColor(red,green,blue); int x=gap*(j+1)+j*deltaX; int y=gap*(i+1)+i*deltaY; g.fillRect(x,y,deltaX,deltaY);
11
ColorTest else{ g.setGrayScale(0xFF); g.fillRect(0,0,width,height);
int deltaGrayScale=0xFF/(nrow*ncol); for(int i=0;i<nrow;i++){ for(int j=0;j<ncol;j++){ int n=(i+1)*ncol+j; g.setGrayScale(deltaGrayScale*n); int x=gap*(j+1)+j*deltaX; int y=gap*(i+1)+i*deltaY; g.fillRect(x,y,deltaX,deltaY); }
12
ColorTest
13
Stroke Sytle 선을 그리는 두가지 방법이 존재 Void setStrokeStyle(int style)
실선(solid) 점선(Dotted) Void setStrokeStyle(int style)
14
Plot2DTest import javax.microedition.midlet.*;
import javax.microedition.lcdui.*; import java.lang.Math; public class Plot2DTest extends MIDlet{ private Display display; int v1[]={10,30,40,70,50}; int v2[]={30,90,50,60,65}; int maxX; int maxY; public Plot2DTest(){ display=Display.getDisplay(this); maxX=Math.max(v1.length,v2.length)-1; maxY=0; for(int i=0;i<v1.length;i++){ maxY=Math.max(maxY,v1[i]); } for(int i=0;i<v2.length;i++){ maxY=Math.max(maxY,v2[i]); maxY+=10; public void startApp() throws MIDletStateChangeException { display.setCurrent(new Plot2DTestCanvas(v1,v2,maxX,maxY)); public void pauseApp() {} public void destroyApp(boolean unconditional) {}
15
Plot2DTest class Plot2DTestCanvas extends Canvas{ int v1[]; int v2[];
int maxX,maxY; public Plot2DTestCanvas(int[] v1, int[] v2, int maxX, int maxY){ this.v1=v1; this.v2=v2; this.maxX=maxX; this.maxY=maxY; } public void paint(Graphics g){ int width=this.getWidth(); int height=this.getHeight(); g.setColor(0xFFFFFF); g.fillRect(0,0,width,height); g.setColor(0x000000); g.drawLine(0,height,0,0); g.drawLine(0,height-1,width,height-1); int deltaX=width/maxX; int deltaY=height/maxY; g.setColor(0xFF0000); for(int i=0;i<v1.length-1;i++){ g.drawLine(deltaX*i,height-deltaY*v1[i],deltaX*(i+1),height-deltaY*v1[i+1]); g.setStrokeStyle(Graphics.DOTTED); g.setColor(0x0000FF); for(int i=0;i<v2.length-1;i++){ g.drawLine(deltaX*i,height-deltaY*v2[i],deltaX*(i+1),height-deltaY*v2[i+1]);
16
Plat2DTest
17
Low Level Event 키패드의 이벤트를 지원 주요 Handler Void keyPressed(int keyCode)
Void keyRepeated(int keyCode) Void keyReleased(int keyCode) Void pointerPressed() Void pointerDragged() Void pointerReleased()
18
KeyCode KEY_NUM0 ~ KEY_NUM9 KEY_STAR KEY_POUND
19
KeyEventTest import javax.microedition.midlet.*;
import javax.microedition.lcdui.*; public class KeyEventTest extends MIDlet{ private Display display; public KeyEventTest(){ display=Display.getDisplay(this); } public void startApp() throws MIDletStateChangeException { display.setCurrent(new KeyEventTestCanvas()); public void pauseApp() {} public void destroyApp(boolean unconditional) {}
20
KeyEventTest class KeyEventTestCanvas extends Canvas{ String str="";
public KeyEventTestCanvas(){ } public void paint(Graphics g){ int width=this.getWidth(); int height=this.getHeight(); g.setColor(0xFFFFFF); g.fillRect(0,0,width,height); g.setColor(0x000000); g.drawString("Press a key",5,5,g.TOP|g.LEFT); g.drawString(str,5,25,g.TOP|g.LEFT); public void keyPressed(int keycode){ if(keycode==Canvas.KEY_NUM1) str="일 is pressed"; else if(keycode==Canvas.KEY_NUM2) str="이 is pressed"; repaint();
21
KeyEventTest
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.