开发学院软件开发Java MIDP2.0中如何通过代码画半透明的圆和椭圆 阅读

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

 2007-12-23 12:30:45 来源:WEB开发网   
核心提示: 最近在做一个小Demo时,需要画一个半透明的圆,看遍MIDP的API及Nokia UI包的文档,发现没有一个函数能做出此功能,没办法了,只好自已写了. 画圆的思路很简单,就是生成一个半径两倍的正方开的RGB数组,有来装圆上每个点的象素的颜色,如果这个点与圆心的距离 <= 半径,则这个点在圆里面,颜色为半透明的,
   最近在做一个小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

(出处:http://www.cncms.com)


Tags:MIDP 如何 通过

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接