bada 2D游戏编程之二——图像绘制(2)

 

 

bada 2D游戏编程之二——图像绘制 编程

 

因为篇幅限制,因此拆成了两篇。 ide

 

3,  建立区域图片 spa

这种方式是先调用Bitmapresult Construct(const Bitmap& bitmap, const Osp::Graphics::Rectangle& rect)将图片中的部分区域建立成一张独立的Bitmap,而后再进行“整图绘制”。 orm

同“区域绘制”相似,它也是采用精灵表,可是与直接绘制精灵表中的精灵不同,它是先根据精灵列表中的精灵所在区域建立精灵图片,而后再绘制精灵图片。 blog

 

 

下面的代码就是如何绘制出上面的三张精灵图片: 游戏

(1)    精灵表和精灵图片声明 图片

   Osp::Graphics::Bitmap* __robotBmp; 内存

   Osp::Graphics::Bitmap* __robot1Bmp; ci

   Osp::Graphics::Bitmap* __robot2Bmp; get

Osp::Graphics::Bitmap* __robot3Bmp;

(2)    加载精灵表图片,并根据精灵表中精灵的位置建立精灵图片

__robotBmp = AppResource::GetInstance()->GetBitmapN("robot.PNG");

int spriteWidth = 100;

int spriteHeight = 115;

__robot1Bmp = new Bitmap();

__robot1Bmp->Construct(*__robotBmp,Rectangle(0*spriteWidth,0*spriteHeight,spriteWidth,spriteHeight));

 

__robot2Bmp = new Bitmap();

__robot2Bmp->Construct(*__robotBmp,Rectangle(1*spriteWidth,0*spriteHeight,spriteWidth,spriteHeight));

 

__robot3Bmp = new Bitmap();

__robot3Bmp->Construct(*__robotBmp,Rectangle(2*spriteWidth,0*spriteHeight,spriteWidth,spriteHeight));

 

(3)    绘制精灵图片

Canvas* pCanvas = GetCanvasN();

if(pCanvas){

pCanvas->DrawBitmap(Point(100,100), *__robot1Bmp);

pCanvas->DrawBitmap(Point(100,300), *__robot2Bmp);

pCanvas->DrawBitmap(Point(100,500), *__robot3Bmp);

 

delete pCanvas;

}

 

总结:

上面的3个例子获得的结果都是同样的,能够说是异曲同工。下图是最终的效果图:

 

这三种方式各有各的优缺点,你们都须要结合游戏的实际状况进行综合应用。

绘制方式

优势

缺点

整图绘制

绘图效率高

每一个精灵都用一张单独的图片,会形成图片太多不便于管理

区域绘制

采用精灵表能够减小图片数量,便于管理图片

1. 绘图效率低

2. 须要计算图片在精灵表中的位置

建立区域图片

1. 绘图效率高

2. 采用精灵表能够减小图片数量,便于管理图片

1. 须要计算图片在精灵表中的位置

2. 须要为精灵表中的图片分配内存,增长了程序的内存使用量

相关文章
相关标签/搜索