第5章低级用户界面.ppt
《第5章低级用户界面.ppt》由会员分享,可在线阅读,更多相关《第5章低级用户界面.ppt(88页珍藏版)》请在三一办公上搜索。
1、Displayable的子类可以充满整个界面,其直接子类有两个:Screen:提供高级界面开发,界面效果都是由控件组成的;Canvas:提供低级界面开发,界面效果都是通过编程,在画布上画出来的。,低级用户界面,本章授课内容,低级用户界面简介Canvas类Graphics类,低级用户界面,低级API包括两个部分:Canvas类:画布类,在其上可以进行图形操作,同时它也是低级事件的接收者;Graphics类:绘图类,可以用来提供文本和图像,并且能够实现绘制和填充图形。,低级用户界面,Canvas和Graphics关系图,Canvas类,Canvas 组件表示屏幕上一个空白矩形区域,应用程序可以在该
2、区域内绘图,或者可以从该区域捕获用户的输入事件。,Canvas类,public abstract class Canvas extends Displayable应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件)。Canvas类中定义了一个抽象方法paint(),它是Canvas最核心的方法,Canvas所有的子类都必须实现它。,在Canvas类中,有如下重要成员方法:1:protected abstract void paint(Graphics g)该方法是抽象方法,如果扩展了Canvas类,就必须对paint方法进行重写。该方法指定了如何在屏幕上绘制自定义图形
3、,该函数里面可以包含画图的代码。注意,该方法是在界面出现时自动调用的!,Canvas类,Canvas类,综上所述,画布开发的基本结构如下:,public class MIDlet1 extends MIDlet/画布类class MyCanvas extends Canvas public void paint(Graphics g)/在画布上画图 private MyCanvas mc=new MyCanvas();private Display dis;protected void startApp()throws MIDletStateChangeException dis=Displa
4、y.getDisplay(this);dis.setCurrent(mc);/其他代码,public final void repaint(int x,int y,int width,int height):重绘屏幕上指定的区域。其中参数x和y是该矩形左上角的坐标,参数width和height分别指定了该矩形的宽度和高度。public final void repaint():重绘整个屏幕。相当于:repaint(0,0,getWidth(),getHeight(),Canvas类,Canvas类,注意:这个方法是异步的,即在repaint()方法执行后,paint()方法也可能不会立即被调用
5、。repaint()方法的发出者必须是当前显示的Canvas对象,否则任何重绘命令都是没有意义的。,Canvas类,public final void serviceRepaints()另一个实现重绘的方法,该方法强制要求执行当前所有的重绘请求,并堵塞当前线程,直到重绘请求被执行。如果当前没有任何重绘请求,该方法会被忽略掉,不过,这个方法一定要小心使用,必须保证在当前情况下不会因为paint()方法中的资源被占用而引起死锁。,Canvas类,Display类中有个方法:public void callSerially(Runnable r):该方法实现paint()和repaint()方法同步
6、。在MIDP中,所有与用户界面有关的调用都是顺序执行的,如果同时发生,就会放到一个队列里,执行完一个再执行另一个,当Display的对象调用callSerially(Runnable r)时,会调用r内部的run()方法,但是该方法会等到队列中的其他调用都返回后才执行。,Canvas类,public void setFullScreenMode(boolean mode)该函数可以设置画布是否以全屏幕显示。如果为true,则全屏幕显示,此时Title,Ticker以及Command都无法在屏幕上显示。,Canvas类,protected void showNotify():这个方法是保护型的,
7、可以被重写。这个方法在画布放在界面最前端显示时自动调用。protected void hideNotify():这个方法是保护型的,可以被重写。这个方法在画布隐藏时自动调用。,Canvas类,设置画布的标题:public void setTitle(String s)为画布设置滚动条:public void setTicker(Ticker ticker)得到画布的宽度:public int getWidth()得到画布的高度 public int getHeight(),用Canvas开发简单画图系统,paint方法:protected abstract void paint(Graphic
8、s g)paint函数参数是一个Graphics对象Graphics类定义如下:public class Graphics extends Object它直接继承java.lang.Object类。,Graphics类,Graphics类提供简单的绘制功能,主要有以下三类:绘制文本:可以使用设备所支持的字体绘制指定的字符串绘制二维几何图形:可以绘制包括直线,矩形,圆弧等简单的二维几何图形。绘制图像:可以从图像文件中绘制不可变图像,也可以从缓存中绘制可变图像。,不变图像:可被存储于持久存储器,网络或者内存中,一旦生成就不能更改。可变图像:只能存在于内存中,并且可对可变图像进行修改。,Graphi
9、cs类一般不用构造函数来实例化其对象,获得Graphics对象有两个方法:用paint()方法传入参数用Image类中的getGraphics()方法得到Graphics对象。,用Canvas开发简单画图系统,Graphics坐标,一般的数学坐标原点在左下角,x轴数值往右递增,y轴数值往上递增。,Graphics坐标,而手机开发中屏幕坐标原点在右上角,x轴数值往右递增,y轴数值往下递增,正好与传统坐标相反。,画笔对象的重要功能有:用RGB组合的方法设置画笔颜色:public void setColor(int RGB)该函数可以设置画笔的颜色,传入的参数是一个16进制数,用0 xRRGGBB表
10、示,每个分量为00-FF之间。,设置画笔颜色,用RGB分量方法设置画笔颜色:public void setColor(int red,int green,int blue)该函数传入红色、绿色和蓝色分量,值皆为0-255之间。,设置画笔颜色,获取画笔颜色分量,得到红色分量:public int getRedComponent()得到绿色分量:public int getGreenComponent()得到蓝色分量:public int getBlueComponent(),设置画笔线型,public void setStrokeStyle(int style)该函数能够设置画线的线型,其参数可
11、有两种选择:Graphics.SOLID:实线;Graphics.DOTTED:虚线。public int getStrokeStyle():获取线型,用Canvas开发简单画图系统,Graphics常见的画图函数:1:画线:public void drawLine(int x1,int y1,int x2,int y2)该函数从坐标(x1,y1)到(x2,y2)画一条线。界面上左上角的坐标为(0,0),越往右X越大,越往下Y越大。,用Canvas开发简单画图系统,2:画矩形:public void drawRect(int x,int y,int width,int height)该函数以(
12、x,y)为左上角坐标,width为宽度,height为高度画一个矩形。,用Canvas开发简单画图系统,3:画圆角矩形:public void drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)该函数画一个圆角矩形,以(x,y)为左上角坐标,width为宽度,height为高度,arcWidth为圆角水平直径,arcHeight为圆角垂直直径。,用Canvas开发简单画图系统,arcWidth 为圆角水平直径,arcHeight 为圆角垂直直径。,arcHeight,arcWidth,4:画圆弧(
13、椭圆弧):public void drawArc(int x,int y,int width,int height,int startAngle,int arcAngle)该函数画一段圆弧,在画图系统中,任何的圆或椭圆都可以包含在一个矩形内,因此,确定了矩形,就确定了圆弧。该函数中,圆弧所在的矩形以(x,y)为左上角坐标,width为宽度,height为高度,以startAngle为开始的角度,arcAngle为画出的角度。注意,在圆形画图过程中,从中心水平向右表示0度,逆时针为正方向。,用Canvas开发简单画图系统,5:绘制填充矩形:void fillRect(int x,int y,in
14、t width,int height)该函数从坐标(x,y)开始画一个长width,宽height.的实心矩形。6:填充圆角方框 public void fillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight),用Canvas开发简单画图系统,7:填充椭圆 public void fillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)8:填充三角型 public void fillTriangle(intx1,inty1,intx2,inty2
15、,intx3,inty3),用Canvas开发简单画图系统,上节课回顾,低级用户界面简介Canvas类setFullScreenMode(boolean mode):该函数可以设置画布是否以全屏幕显示。protected void showNotify():在画布放在界面最前端显示时自动调用。protected void hideNotify():在画布隐藏时自动调用。,上节课回顾,paint()方法:包含画图的代码,界面出现时自动调用。重画的三种方法:repaint():调用paint()方法,异步方法。serviceRepaints():堵塞当前线程,使repaint和paint同步。ca
16、llSerially(Runnable r):实现paint()和repaint()方法同步。等到队列中的其他调用都返回后才执行。Display类的方法。,上节课回顾,用Canvas开发简单画图系统:Graphics类设置颜色:setColor()设置线型:setStrokeStyle(int style)二维图形的绘制:画线,画矩形,画圆角矩形,画圆弧,绘制字符串,字体的设置,本节课内容,文字绘制和Font类图形的剪裁图形的卷动设计图像处理,文字绘制,Graphics类中提供了多个方法绘制文本。drawString()drawChar()drawChars()drawSubstring(),
17、文字绘制,绘制指定字符void drawChar(char character,int x,int y,int anchor)绘制指定字符数组void drawChars(char character,int offset,int len,int x,int y,int anchor)绘制字符串子串void drawSubstring(String str,int offset,int len,int x,int y,int anchor)str是制定绘制的字符串文本,offset制定子字符串的起始位置,len指定子字符串的长度。,绘制字符串:void drawString(String st
18、r,int x,int y,int anchor)参数 1 是字符串的内容,如“中国人”;参数 2 和参数3 是参考点在屏幕上的坐标(x,y),注意,不是左上角在屏幕上的坐标(x,y)!因为参考点不一定是左上角的那个点!参考点到底确定为哪一点呢?由第四个参数决定。第四个参数由两个值合成,这两个值之间用“|”隔开。其中一个值表示水平方向,另一个值表示垂直方向。,文字绘制,画笔之字符串绘制,由于字符串本身显示就占有一定的屏幕控件,占用的空间是个矩形的空间。anchor的作用就是设置字符串占用屏幕的矩形方块哪个部分的坐标。,字符串占用空间,表示水平方向的值通常可以在以下内容中选择:1:Graphic
19、s.LEFT:锚点位于文本或图像的左方2:Graphics.HCENTER:锚点位于文本或图像的水平中央3:Graphics.RIGHT:锚点位于文本或图像的右方表示垂直方向的值,可以选择:1:Graphics.BOTTOM:锚点位于文本或图像的下部2:Graphics.TOP:锚点位于文本或图像的上部3:Graphics.BASELINE:锚点位于文本的基线根据定义,锚点的值必须有水平常量和垂直常量组合表示。,画笔之字符串绘制,画笔之字符串绘制,画笔之字符串绘制,举例:g.drawString(“字符串”,40,40,Graphics.TOP|Graphics.LEFT)Graphics.T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 低级 用户界面

链接地址:https://www.31ppt.com/p-5652602.html