2015-08-29 46 views
2

我需要創建一個非常簡單的程序,讓用戶瀏覽圖像,然後將其用於顯示在屏幕上的位圖。如何在Allegro 5中使用瀏覽文件?

我知道如何創建一個簡單的本機文件對話框與Allegro 5,但我不知道如何使用選定的文件作爲我的位圖。

這是我的代碼:

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

當我點擊這些文件,本機文件對話框消失,沒有任何反應都沒有。我爲這件事搜尋了很多,但是我找不到解決我的問題的答案。

如何使用所選圖像創建位圖?通過查看API什麼

回答

1

讓我們開始定義:

  • ALLEGRO_FILECHOOSER:手柄到文件對話框。
  • al_show_native_file_dialog:顯示與句柄關聯的對話框的方法。

所以,在創建對話框後,初始化並顯示它,用戶將選擇一個文件。但是,此對話框一次支持多個文件的選擇,那就是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到屏幕上的圖像。

+0

嗨,感謝您的評論!不幸的是我非常困惑,而且API並沒有真正幫助我:/ **這個函數中** **的目標是什麼? 另外,您可以解釋_al_create_native_file_dialog_中的**模式**是什麼? 非常感謝您的幫助,但Allegro的GUI對我來說仍然很陌生,我無法在任何地方找到我的問題的答案:c – Nexus

+0

@Pedro沒有問題,但是現在在我的時區,它是23: 10(下午11點10分)及其睡覺時間:)明天我編輯問題。爲了更好地解釋這一點,但是如果用戶在對話中同時選擇了多個文件,我代表其中一個文件。明天晚上7點左右,我有時間編輯這個問題,所以提醒一下! – rlam12

+0

謝謝!我會等着:v – Nexus