如前文所述,引路蜂地图开发包中Gis.Drawing 类定义了几个抽象类或接口,对不同平台的图形系统进行了抽象。以Java ME平台为例,可以使用Sun的LWUIT 或是MIDP 自带的javax.microedition.lcudi 来绘制几何图形或是图象。这些绘图的接口不同,如果在引路蜂地图开发包直接引用这些类方法,这样不同平台就会需要编译不同的开发包。通过抽象处理,引路蜂地图开发包并直接调用平台相关的图形类方法。而是通过 开发包 + 平台相关图形系统实现的方法,就可以实现跨平台。下面是Java ME平台的一个例子。
通过对LWUIT 和 MIDP 图形系统接口的实现,同一个库可以用于不同的平台。
实际上Java ME 平台上同一个库也可以用于Blackberry 应用,Blackberry除了支持MIDP之外,还定义自已的UI Framework ,这是只要实现在 Blackberry 的UI Framework上的Gis.Drawing接口就可以开发Blackberry应用(非 Java ME Midlet 应用)。
Gis.Drawing 定义了地图开发包中所需要的最小功能集,如果你开发的应用中不需要使用矢量地图,则与矢量地图相关的一些类或方法则可以为空。
这里给出Gis.Drawing中定义的类或方法详细列表,是一个非常小的功能集合,也就是说如果想支持新的平台,实现这些方法是一个非常简单的任务。
前面定义了:
AbstractGraphcsFactory | 抽象图形类工厂,主要用于创建新的图象对象. |
IGraphics | Graphics接口定义,定义了用于图形绘制的一些方法。 |
IFont | Font 定义,如果不使用矢量地图,可以不实现该类。 |
IImage | Image 图象接口,定义了取得图象大小等方法。 |
类AbstractGraphcsFactory定义
Java 定义
方法名 | 描述 |
abstract public IImage createImage (int[] rgb, int width, int height); | 根据int []数组创建IImage 对象。 Rgb为一个存取每个像素值的整数数组。 为ARGB 格式。 Width,height 为要创建图形的大小。 |
abstract public IImage createImage (byte[] bytes, int offset, int len); | 从一个字节数组中创建IImage 对象。这引数组为一般为图象的png 文件数据。 |
abstract public IImage createImage(int width, int height); | 创建一个大小为width ,height 的空IImage 对象。 |
C# 定义
方法名 | 描述 |
public abstract IImage CreateImage(int[] rgb, int width, int height); | 根据int []数组创建IImage 对象。 Rgb为一个存取每个像素值的整数数组。 为ARGB 格式。 Width,height 为要创建图形的大小。 |
public abstract IImage CreateImage(byte[] bytes, int offset, int len); | 从一个字节数组中创建IImage 对象。这引数组为一般为图象的png 文件数据。 |
public abstract IImage CreateImage(int width, int height); | 创建一个大小为width ,height 的空IImage 对象。 |
接口 IGraphics定义
Java 定义
方法名 | 描述 |
public void setClip(int x, int y,int width,int height) | 设置绘制剪裁区域,可以空实现。 |
public void drawImage(IImage img, int x, int y); | 在位置(x,y)处绘制img。 |
public void drawLine(int x1, int y1, int x2, int y2) | 绘制一条线段 |
public void setColor(int RGB); | 设置颜色 |
public void fillRect(int x, int y, int width, int height); | 填充矩形 |
public void drawRect(int x,int y,int width, int height); | 绘制矩形 |
public void drawString(String str,int x,int y); | 显示字符串,只在矢量地图时需要。 |
public void setFont(IFont font); | 设置字体,只在矢量地图时需要。 |
public void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3); | 填充三角形,只在矢量地图时需要。 |
C# 定义
方法名 | 描述 |
void SetClip(int x, int y, int width, int height); | 设置绘制剪裁区域,可以空实现。 |
void DrawImage(IImage img, int x, int y); | 在位置(x,y)处绘制img。 |
void DrawImage(IImage img, int x, int y,int transparentColor); | 在位置(x,y)处绘制img,只在windows mobile 时需要,transparentColor为透明色。其它时候,调用void DrawImage(IImage img, int x, int y)即可。 |
void DrawLine(int x1, int y1, int x2, int y2); | 绘制一条线段 |
void SetColor(int rgb); | 设置颜色 |
void FillRect(int x, int y, int width, int height); | 填充矩形 |
void DrawRect(int x, int y, int width, int height); | 绘制矩形 |
void DrawString(string str, int x, int y); | 显示字符串,只在矢量地图时需要。 |
void SetFont(IFont font); | 设置字体,只在矢量地图时需要。 |
IFont 类定义,IFont 只在使用矢量地图时需要定义,其它情况可以使用空实现。
Java定义
方法名 | 描述 |
public Object getNativeFont(); | 返回平台相关字体对象。 |
public int charsWidth(char[] ch, int offset, int length); | 返回指定字符串宽度。 |
C#定义
方法名 | 描述 |
object GetNativeFont(); | 返回平台相关字体对象。 |
int CharsWidth(char[] ch, int offset, int length); | 返回指定字符串宽度。 |
IImage 类定义
Java定义
方法名 | 描述 |
public IGraphics getGraphics(); | 取得该图象对象的相关画板类,用于在该图象上绘制图形。 |
public int[] getRGB(); | 返回该图象的int[]数组,只在矢量地图时需要 |
public int getHeight() | 返回图象高度 |
public int getWidth(); | 返回图象宽度 |
public Object getNativeImage(); | 返回平台相关图象对象 |
C#定义
方法名 | 描述 |
IGraphics GetGraphics(); | 取得该图象对象的相关画板类,用于在该图象上绘制图形。 |
int[] GetRGB(); | 返回该图象的int[]数组,只在矢量地图时需要 |
int GetHeight(); | 返回图象高度 |
int GetWidth(); | 返回图象宽度 |
object GetNativeImage(); | 返回平台相关图象对象 |