快速业务通道

一些实用的图形用户界面方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

一些实用的图形用户界面方法

时间:2011-02-10 j2medev 玩狙青年

这个函数已反复应用于多个手机应用软件平台

用法:参数定义:str——要分割的字符串

font——字体

rowMaxW——分割后每行宽度

支持标示符:

\n 换行

\t 插入两个汉字长度的空格

public static final String[] clipString(String str,Font font,int rowMaxW){  if(str == null)  return null;  if(rowMaxW < font.charWidth(''哈''))  rowMaxW = font.charWidth(''哈'');        int strID = 0;  int rowW = 0;  Vector strManager = new Vector();  char ch = '' '';  while(str.length() > strID){  ch = str.charAt(strID);  switch(ch)  {  case ''\n '':   strManager.addElement(str.substring(0,strID));   str = str.substring(strID+1);   rowW = 0;   strID = 0;   break;  case ''\t'':   StringBuffer sb = new StringBuffer(str);   sb.deleteCharAt(strID);   sb.insert(strID,"    ");   str = sb.toString();   break;  default:   if(rowW + font.charWidth(ch) > rowMaxW){   strManager.addElement(str.substring(0,strID));   str = str.substring(strID);   rowW = 0;   strID = 0;   }else{   rowW += font.charWidth(ch);   strID++;   }  }  }  strManager.addElement(str);  String[] o_Str = new String[strManager.size()];  strManager.copyInto(o_Str);  return o_Str; }

一些实用的图形用户界面方法(2)

时间:2011-02-10 j2medev 玩狙青年

返回结果是一个已切割好的String数组,只要用一个循环打印出来就可以了

public static final void drawClipString(Graphics g,String[] clipStr,Font font,int color,int x,int y){  if(clipStr == null){   System.out.println("drawClipString");   return;  }  int FONTH = font.getHeight();  g.setFont(font);  g.setColor(color);  for(int i=0;i<clipStr.length;i++)   g.drawString(clipStr[ i ],x,y+i*FONTH,0); }

参数定义:clipStr——先前分割好的字符串数组

font——字体

color——颜色

x,y——打印的屏幕位置

注意,切割和打印函数的字体参数必须保持一致!

半透明技术(限MIDP2.0)

// 获得半透明图片,透明度从0到10共分为11个等级 public static final Image alfImage(Image img,int alf){  if(img == null){  System.out.println("alfImage");  return null;  }  if(alf < 0)  alf = 0;  else if(alf > 10)  alf = 10;  int imgW = img.getWidth();  int imgH = img.getHeight();  int[] RGBData = new int[imgW*imgH];  img.getRGB(RGBData,0,imgW,0,0,imgW,imgH);  int tmp = ((alf*255/10) << 24)|0x00ffffff;  for(int i=0;i<RGBData.length;i++)  RGBData &= tmp;  Image o_Img = Image.createRGBImage(RGBData,imgW,imgH,true);  return o_Img; }

灰度图转化函数// 得到灰度图

public static final Image grayImage(Image img){  if(img == null){   System.out.println("grayAlfImage");   return null;  }  int imgW = img.getWidth();  int imgH = img.getHeight();  int[] imgRGBData = new int[imgW*imgH];  img.getRGB(imgRGBData,0,imgW,0,0,imgW,imgH);  int ALF = 0;  int R = 0;  int G = 0;  int B = 0;  int GRAY = 0;  for(int i=0;i<imgRGBData.length;i++){   ALF = (imgRGBData >> 24) & 0xFF;   R = (imgRGBData >> 16) & 0xFF;   G = (imgRGBData >> 8) & 0xFF;   B = imgRGBData & 0xFF;   GRAY = (R*77+G*151+B*28 + 128)>>8;   imgRGBData = (ALF<<24)|(GRAY<<16)|(GRAY<<8)|GRAY;  }  return Image.createRGBImage(imgRGBData,imgW,imgH,true); }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号