`
javababy1
  • 浏览: 1171633 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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 // 必须的

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics