发新话题
打印

如何在界面中显示位图

如何在界面中显示位图

  一般有很多种方法在一个窗口中显示位图。最常用的几种如下:

  将位图作为一个元素包含在窗口中,然后显示这个窗口。在保证上下文的相对位置不变,和始终是这个位图的情况下,这是最常用的一种办法。
 
  将位图作为一个独立的资源,在程序的控制下,在规定的时间和位置将图片加载到窗口中。这种方式常常用于那些根据实际情况必须更换不同图片,以及制作慢速动画的场合。
 
  使用Palm OS的作图功能,在必要的情况下,直接将像素写到屏幕上。这种方式适用于那些需要动态生成位图的场合。
 
  直接操作Video存储器。在需要制作高速,流畅的动画是,您将不得不使用这种方式。而且,这种方式能够实现诸如淡入淡出、融合之类的特效。但是必须注意到,要正确实现这种方式,难度比较大。尤其是当前的Palm显示技术变化得很快。像目前的Palm色彩位深度的升级换代几乎是每6个月一次。有可能到了明天,直接操作Video存储器的技术会被Screen Resolution或是其它什么技术代替。

  方式1和方式3是不需要什么太高深的技术,这里就不多说了。而方式4则超出了这篇文章的讨论范围。我们在这里提供一下关于方式2的程序范例:

boolen DrawBitmap (int iResourceID)

{

 VoidHand hResource;

 if ((hResource = DmGet1Resource(bitmapRsc, iResouceID)) != 0)

 {

  BitmapPtr pzBitmap = (BitmapPtr) MemHandleLock(hResource);

  WinDrawBitmap(pzBitmap,x,y);

  MenPtrUnlock(pzBitmap);

  DmReleaseResource(hResource);

  return(true);

 }

 else

 {

  file://找不到位图文件的错误陷阱

  return(false);

 }

}


  对于程序的说明:

  首先调用DMGet1Resource()函数来获得一个资源的句柄。

  然后调用MemHandleock()函数锁定位图资源的存储数据空间,返回指向该数据空间的位置指针。

  然后调用WinDrawBitmap()函数来绘制位图,这里需要一个指向位图的指针。

  然后用MemPtrUnlock()函数释放那个被指针锁定的位图的存储空间。然后用DmReleaseResource()函数释放资源。

TOP

发新话题