Allegro学习笔记二

http://wiki.allegro.cc/AllegroExamples 以上是英文例子站点。

by Shawn Hargreaves,allegro的作者

目录: 1 Allegro 例子

1.1 exhello
1.2 exmem


这个例子演示了内存位图的用法。
它在内存里创建了一个用于输出的小(相对与screen)模板位图,
并在上面绘制了一些圆圈。
最后使用blits将它复制到屏幕上。

#include <allegro.h>

int main(void)
{
   BITMAP *memory_bitmap;
   int x, y;

   if (allegro_init() != 0)
      return 1;
   install_keyboard();

   if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) != 0) {
      if (set_gfx_mode(GFX_SAFE, 320, 200, 0, 0) != 0) {
  set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
  allegro_message("Unable to set any graphic mode/n%s/n", allegro_error);
  return 1;
      }
   }

   set_palette(desktop_palette);

   /* 设置内存位图的大小为 20x20 */
   memory_bitmap = create_bitmap(20, 20);

   /* 在上面画一些圈圈 */
   clear_bitmap(memory_bitmap);
   for (x=0; x<16; x++)
      circle(memory_bitmap, 10, 10, x, palette_color[x]);

   /* 将模板位图复制到屏幕N次 */
   acquire_screen();

   for (y=0; y<SCREEN_H; y+=20)
      for (x=0; x<SCREEN_W; x+=20)
  blit(memory_bitmap, screen, 0, 0, x, y, 20, 20);

   release_screen();

   /* 释放掉内存位图 */
   destroy_bitmap(memory_bitmap);

   readkey();
   return 0;
}

END_OF_MAIN()
------------------------------------------------------------------------------------------------------------

小结二:

1、// 此函数在内存中开辟了一个大小为20*20的位图,它并不实际显示
memory_bitmap = create_bitmap(20, 20);

2、clear_bitmap(memory_bitmap); //  你没办法保证在使用你的位图之前,它是无残留数据的,所以清除它。

3、circle(memory_bitmap, 10, 10, x, palette_color[x]); // 基本绘制函数

4、从上次小结就遗留下来的问题set_palette(desktop_palette);
PALETTE* desktop_palette;// 类型 PALETTE 被定义成 256 RGB 结构的数组.
(以下摘自Shawn Hargreaves的3.1使用手册,风云翻译):extern PALETTE desktop_palette;
这个调色板由 Atari ST 低分辨率桌面使用. 我不好 确认这个为什么还在这儿, 除了 grabber 和测试程序使用外,就没什么用途了. 这可能是 Allegro 里 Atari 仅有的遗留代码, 可能是不好意识把它去掉吧 :-)

set_palette();//设置整个调色板的 256 种颜色. 你应提供 256 个 RGB 结构的数组

5、blit(memory_bitmap, screen, 0, 0, x, y, 20, 20); // 位块复制,没啥好说的...
void blit(BITMAP *source, BITMAP *dest, int source_x, int source_y, int dest_x, int dest_y, int width, int height);

6、destroy_bitmap(memory_bitmap); // 释放位图,与 memory_bitmap = create_bitmap(20,20);相对

--------------------------------------------------------------------------------------------------------------------------------------------------

使用allegro的公式:
1、allegro_init();   // 必须的
2、install_keyboard(); // 初始化,相关的还有install_mouse(); install_joystick();
3、set_gfx_mode(标志量,屏幕宽,屏幕高,0,0); // 设置显示模式
4、set_palette(desktop_palette); // 设置调色板
5、绘制(直接写屏、文字输出、新建位图,位图拷贝);
6、readkey();响应用户输入事件
7、END_OF_MAIN // 必须的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值