`
univasity
  • 浏览: 816227 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • J2me
阅读更多

    最近在做一个小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
= 0x00FF0000; //全透明
   else
    aryTmp
= (alpha << 24) | 0x00FF0000;//半透明
  }
  
  return aryTmp;  
}

下面是做出来的效果:
  
   

椭圆的思路与圆的很相似,假设椭圆的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
= 0x00FF0000; //全透明
   else
    aryTmp
= (alpha << 24) | (0x0000FF & 0x00FFFFFF); //半透明
  }
  
  return aryTmp;  
}

下面是做出来的效果:
  

转贴来自于:
http://www.j2medev.com/Article/Class1/Class12/200607/2810.html

 

分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    java源码包2

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    java源码包3

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    java源码包4

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

Global site tag (gtag.js) - Google Analytics