如何在Allegro 5中使用浏览文件?

时间:2015-08-29 01:24:42

标签: c file allegro5

我需要创建一个非常简单的程序,让用户浏览图像,然后将其用于将在屏幕上显示的位图。

我知道如何使用Allegro 5创建一个简单的原生文件对话框,但我不知道如何将所选文件用于我的位图。

这是我的代码:

ALLEGRO_FILECHOOSER *filechooser;
    filechooser = al_create_native_file_dialog("C:", "Choose a file.", "*.*;*.jpg;", 1);
    al_show_native_file_dialog(display, filechooser);

当我点击文件时,原生文件对话框消失,根本没有任何反应。我搜索了很多这个问题,但我找不到问题的答案。

如何使用所选图像创建位图?

1 个答案:

答案 0 :(得分:2)

让我们首先看一下API定义的内容:

  • ALLEGRO_FILECHOOSER:文件对话框的句柄。
  • al_show_native_file_dialog:显示与句柄关联的对话框的方法。

因此,在创建对话框后,初始化并显示它,用户将选择一个文件。但是,此对话框支持一次选择多个文件,即 size_t i al_get_native_file_dialog_path 的用途。

为了让您知道用户选择了多少文件,您必须调用al_get_native_file_dialog_count并存储它返回的值。

稍后,您现在将在al_load_bitmap函数中调用al_get_native_file_dialog_path,其中包含您要打开的文件的编号,并且瞧!您拥有用户请求的图像,或者如果是这种情况的图像,但实施这是一个很好的练习幻灯片应用程序。

现在举个例子:

ALLEGRO_FILECHOOSER *filechooser;
filechooser = al_create_native_file_dialog("C:", "Choose a file.", "*.*;*.jpg;", 1);
al_show_native_file_dialog(display, filechooser);

/* Actually I will not use this but leaving it here as example only*/
int counter = al_get_native_file_dialog_count(filechooser);

/* Instead of cycling counter, I will select 1 to refer to the first image selected*/
const char* path = al_get_native_file_dialog_path(filechooser, 1);
ALLEGRO_BITMAP *image = al_load_bitmap(path);

此后,您将ALLEGRO_BITMAP上存储的图像显示在屏幕上。