网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.索爱MIDP 2.0手机的系统字体特效.
.简单图形验证码的识别.
.Weblogic6.0中Servlet的注册方法.
.用RMS存储游戏积分.
.重复刷新页面导致网络繁忙出错的.
.MVC构架学习之渐行渐进(一).
.解决Netbeans和Eclipse中的图片路.
.J2EE应用程序中SQL语句的自动构造.
.Filter技术的应用.
.JBOSSAOP学习笔记-AOP基本知识.
.J2ME入门-(10)CDCAPI.
.使用FileUpload组件实现文件上传.
.Infomation Module Profile介绍.
.Velocity用户手册.
.RMS从入门到精通之三.
.搭建OTA下载服务器.
.在索尼爱立信JP7平台上自动启动M.
.新手入门:初学者搭建J2ME移动开.
.j2me网络实战指南.
.从商业角度分析J2EE与WINDOWSDNA.

MIDP2.0中如何通过代码画半透明的圆和椭圆

发表日期:2007-12-23


     最近在做一个小Demo时,需要画一个半透明的圆,看遍MIDP的API及Nokia UI包的文档,发现没有一个函数能做出此功能,没办法了,只好自已写了.
    画圆的思路很简单,就是生成一个半径两倍的正方开的RGB数组,有来装圆上每个点的象素的颜色,如果这个点与圆心的距离 <= 半径,则这个点在圆里面,颜色为半透明的,如果与圆心的距离 > 半径,则这个点在圆外面,全透明,代码如下:
 private int[] getCircleAry(int radius, int alpha) {
  int[] aryTmp = new int[4*radius*radius];
  
  for (int i = 0; i < 4*radius*radius; i++) {
   int x = (int)(i / (2*radius));
   int y = i % (2*radius);
   int iSum = (radius - x)*(radius - x) + (radius - y)*(radius - y);
   if (iSum > radius*radius)
    aryTmp[i] = 0x00FF0000; //全透明
   else
    aryTmp[i] = (alpha << 24) 0x00FF0000;//半透明
  }
  
  return aryTmp;  
 }
下面是做出来的效果:
MIDP2.0中如何通过代码画半透明的圆和椭圆(图一)  MIDP2.0中如何通过代码画半透明的圆和椭圆(图二)
   椭圆的思路与圆的很相似,假设椭圆的X轴的半径是6,Y轴的半径是4,帽椭圆的公式v如下:
        x2/36 + y2/16 = 1
用数学知识处理一下,分子都乘36*16,则公式变成如下:
        16*x2 + 36*y2 = 36*16
再用这个公式来判断点是不是在椭圆里面,是则半透明,否则全透明,代码如下:
 private int[] getEllipseAry(int radiusX, int radiusY, int alpha) {
  int[] aryTmp = new int[4 * radiusX * radiusY];
  int iPosX, iPosY, iSum1, iSum2;
  iSum1 = radiusX * radiusX * radiusY * radiusY;
  
  for (int i = 0; i < 4 * radiusX * radiusY; i++) {
   iPosX = i % (2 * radiusX);
   iPosY = (int)(i / (2 * radiusX));
   iSum2 = (radiusX - iPosX) * (radiusX - iPosX) * radiusY * radiusY +
    (radiusY - iPosY) * (radiusY - iPosY) * radiusX * radiusX;
   if (iSum2 > iSum1)
    aryTmp[i] = 0x00FF0000; //全透明
   else
    aryTmp[i] = (alpha << 24) (0x0000FF & 0x00FFFFFF); //半透明
  }
  
  return aryTmp;  
 }
下面是做出来的效果:
MIDP2.0中如何通过代码画半透明的圆和椭圆(图三)  MIDP2.0中如何通过代码画半透明的圆和椭圆(图四)
 
下载源代码:Transparent.rar

(出处:)


上一篇:velocity的几层窗户纸 人气:808
下一篇:用Ant发布应用程序到OC4J 人气:787
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐