国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MIDP2.0中如何通過代碼畫半透明的圓和橢圓

2019-11-18 16:15:26
字體:
來源:轉載
供稿:網友
     最近在做一個小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://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄河市| 扬中市| 新竹县| 阿拉善盟| 双桥区| 麻城市| 天祝| 蒙城县| 深泽县| 白银市| 宁夏| 香河县| 吉木乃县| 原平市| 汶上县| 宾阳县| 龙里县| 伊金霍洛旗| 图木舒克市| 嘉义县| 缙云县| 香河县| 阳江市| 长泰县| 高台县| 新乡县| 天峻县| 江陵县| 昆明市| 江油市| 沙雅县| 乌鲁木齐市| 侯马市| 睢宁县| 互助| 盐边县| 平顶山市| 石屏县| 乌拉特中旗| 新丰县| 河东区|