当前位置:首页 > 全部子站 > IT > 思科认证

J2ME中使用缓存将屏幕内容存储为Image

来源:长理培训发布时间:2017-12-23 14:09:47

 百度广告

介绍如何将手机屏幕的内容存储为Image对象,这里认为手机屏幕上显示的是一个Canvas。完成这一个功能的思想就是使用缓冲机制。我们不能直接获得Canvas上的像素,因此不能直接从Canvas上的内容获得Image对象。转换一下思路,如果把要绘制的Canvas上的内容首先绘制到一个Image上,而这个Image并不显示到屏幕上,只是在绘画完成后一次性的显示到屏幕上。有经验的朋友一定联想到了双缓冲机制,不过这里并不是要使用双缓冲解决闪屏的问题,而是要得到当前Canvas的内容。

  下面我们编写一个简单的Canvas类来测试一下这个想法,SimpleCanvas是Canvas的子类,为了保存Canvas的内容,我们创建一个Image,大小与Canvas的尺寸相当。

 

以下是引用片段:
int w; 
private Image offImage = null; 
public SimpleCanvas(boolean _buffered){ 
w = getWidth(); 
if(buffered) 

int color = g.getColor(); 
g.fillRect(0,0,w,h); 
Graphics save = g; 
g = offImage.getGraphics(); 
g.setColor(128,128,0); 
//draw the offimage to the canvas 

return offImage; 

  可以看到paint()方法,并不是直接对Canvas操作,而是先把要画的内容绘制到一个Image上,然后再绘制到Canvas上。这样到你想抓取屏幕内容的时候就可以调用printMe()方法了,返回offImage。编写一个MIDlet测试一下这个效果。

 

以下是引用片段:
import Javax.microedition.midlet.*; 
/** 
* @author mingJava 
*/ 
private Display display = null; 
private Command printCommand = new Command("Print",Command.OK,1); 
if(display == null) 
canvas.addCommand(printCommand); 
display.setCurrent(canvas); 
public void pauseApp() {} 
public void commandAction(Command command, Displayable displayable) { 
Form form = new Form("screen"); 
display.setCurrent(form); 

  运行PrintScreen,选择Print,即可把当前的屏幕显示到一个Form中。

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部