2015-08-29 2 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); 

Когда я нажимаю на файлы, диалог нативный файл исчезает, и ничего не происходит вообще. Я много искал в этом вопросе, но я не мог найти ответ на свою проблему.

Как создать растровое изображение с выбранным изображением? начало

ответ

1

Давайте, глядя на то, что API определяет:

  • ALLEGRO_FILECHOOSER: дескриптор диалогового файлаполе.
  • al_show_native_file_dialog: метод отображения диалога, связанного с дескриптором.

Итак, после создания диалогового окна, инициализации и отображения его, пользователь выберет файл. Тем не менее, это диалоговое окно поддерживает выбор нескольких файлов за раз, вот что size_t i в al_get_native_file_dialog_path для.

Для того, чтобы узнать, сколько файлов выбрано пользователем, вы должны затем позвонить al_get_native_file_dialog_count и сохранить значение, которое оно где-то вернуло.

Позже вы теперь вызываете al_get_native_file_dialog_path внутри функции al_load_bitmap с номером файла, который вы хотели бы открыть, и voila! У вас есть изображение, которое пользователь запросил, или изображения, если это произошло, но реализация этого является хорошим упражнением для создания слайд-шоу.

Теперь пример:

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 на самом деле не помогает мне:/ Что конкретно означает ** i ** в этой функции? Кроме того, не могли бы вы объяснить, что такое ** режим ** в _al_create_native_file_dialog_? Большое спасибо за вашу помощь, но графический интерфейс Allegro по-прежнему странный для меня, и я не могу найти ответ для своей проблемы в любом месте: c – Nexus

+0

Нет проблем с этим @Pedro, однако прямо сейчас в моем часовом поясе 23: 10 (11:10 вечера) и время спать :) Завтра я редактирую вопрос. Чтобы лучше объяснить это, но я представляю один из файлов, если пользователь дважды отобразил несколько файлов в диалоговом окне. Завтра около 7 вечера я успею отредактировать это, так что хедз-ап! – rlam12

+0

Спасибо! Я буду ждать: v – Nexus

Смежные вопросы