国产探花免费观看_亚洲丰满少妇自慰呻吟_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://www.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 交口县| 华亭县| 海伦市| 泸西县| 龙门县| 通江县| 德庆县| 无锡市| 新乐市| 樟树市| 仪陇县| 南宫市| 靖安县| 故城县| 大厂| 农安县| 凯里市| 东明县| 德安县| 仙居县| 海口市| 安乡县| 象州县| 宕昌县| 临武县| 丘北县| 扬中市| 邛崃市| 临西县| 内乡县| 沾益县| 岳普湖县| 博野县| 铜川市| 长海县| 巴林右旗| 诸城市| 莱西市| 巫溪县| 平凉市| 南宁市|