Как использовать bmp картинки из п Topic is solved
Как использовать bmp картинки из п
Поставил в проект тулбар, добавил кнопочки с картинками. Указал ссылки на кнопочки. Пеересобрал проект. При запуске выдается это сообщение. No handler found for image type.
В винде то я просто делал, добавил в ресурсы, а в программе уже указывал имя ресурса.
Как правильно в нетбинсе сделать?
В линуксе ресурсы должны идти отдельно или они линкуются к проекту?
Расскажите правильную последовательность действий.
Большое спасибо за Вашу помощь.
В винде то я просто делал, добавил в ресурсы, а в программе уже указывал имя ресурса.
Как правильно в нетбинсе сделать?
В линуксе ресурсы должны идти отдельно или они линкуются к проекту?
Расскажите правильную последовательность действий.
Большое спасибо за Вашу помощь.
Last edited by midisa on Fri Jul 23, 2010 12:14 pm, edited 1 time in total.
-
- Super wx Problem Solver
- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
Re: No handler found for image type.
а в OnInit() у приложения у тебя стоит что-то типа wxInitAllImageHandlers() ?
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
Я стал картинки подключать bmp и все стало отображаться нормально. Но у меня есть вопрос. Сейчас я беру картинки из внешних файлов. Как мне брать картинки из ресурсов программы?
В ресурсы добавил картинки (работаю в NetBeans), по размеру запускаемого файла видно что картинки были добавлены.
Теперь нужно сделать так, чтобы программа отображала картинки на кнопочках не из внешних файлов а из ресурсов.
В wxFormBuilder'e указываю, брать из ресурсов, но при запуске программа ругается. Нужно просто имя файла указывать или идентификатор?
Можете подробнее этот момент рассказать?
В ресурсы добавил картинки (работаю в NetBeans), по размеру запускаемого файла видно что картинки были добавлены.
Теперь нужно сделать так, чтобы программа отображала картинки на кнопочках не из внешних файлов а из ресурсов.
В wxFormBuilder'e указываю, брать из ресурсов, но при запуске программа ругается. Нужно просто имя файла указывать или идентификатор?
Можете подробнее этот момент рассказать?
Я стал картинки подключать bmp и все стало отображаться нормально. Но у меня есть вопрос. Сейчас я беру картинки из внешних файлов. Как мне брать картинки из ресурсов программы?
В ресурсы добавил картинки (работаю в NetBeans), по размеру запускаемого файла видно что картинки были добавлены.
Теперь нужно сделать так, чтобы программа отображала картинки на кнопочках не из внешних файлов а из ресурсов.
В wxFormBuilder'e указываю, брать из ресурсов, но при запуске программа ругается (No image handler for type 2 defined.). Нужно просто имя файла указывать или идентификатор?
Можете подробнее этот момент рассказать?
В ресурсы добавил картинки (работаю в NetBeans), по размеру запускаемого файла видно что картинки были добавлены.
Теперь нужно сделать так, чтобы программа отображала картинки на кнопочках не из внешних файлов а из ресурсов.
В wxFormBuilder'e указываю, брать из ресурсов, но при запуске программа ругается (No image handler for type 2 defined.). Нужно просто имя файла указывать или идентификатор?
Можете подробнее этот момент рассказать?
Я стал картинки подключать bmp и все стало отображаться нормально. Но у меня есть вопрос. Сейчас я беру картинки из внешних файлов. Как мне брать картинки из ресурсов программы?
В ресурсы добавил картинки (работаю в NetBeans), по размеру запускаемого файла видно что картинки были добавлены.
Теперь нужно сделать так, чтобы программа отображала картинки на кнопочках не из внешних файлов а из ресурсов.
В wxFormBuilder'e указываю, брать из ресурсов, но при запуске программа ругается (No image handler for type 2 defined.). Нужно просто имя файла указывать или идентификатор?
Можете подробнее этот момент рассказать?
В ресурсы добавил картинки (работаю в NetBeans), по размеру запускаемого файла видно что картинки были добавлены.
Теперь нужно сделать так, чтобы программа отображала картинки на кнопочках не из внешних файлов а из ресурсов.
В wxFormBuilder'e указываю, брать из ресурсов, но при запуске программа ругается (No image handler for type 2 defined.). Нужно просто имя файла указывать или идентификатор?
Можете подробнее этот момент рассказать?
-
- Super wx Problem Solver
- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
в xpm перегони и подключай этот файл к проекту
http://forums.wxwidgets.org/viewtopic.p ... hlight=ico
http://forums.wxwidgets.org/viewtopic.p ... hlight=ico
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
1. Я не понял что там написано.borr_1 wrote:в xpm перегони и подключай этот файл к проекту
http://forums.wxwidgets.org/viewtopic.p ... hlight=ico
2. Если таскать файлы с проектом, то какая разница в каком формате? ...
Как использовать картинки bmp прямо из ресурсов?
P.S. Форум временами так сильно тормозит ... его что досят?
-
- Earned a small fee
- Posts: 12
- Joined: Tue Nov 24, 2009 6:26 pm
Packaging Bitmap Resources
If you come from a Windows programming background, you are accustomed to loading bitmaps from the resource section of the executable. You can still do this by passing a resource name and the wxBITMAP_TYPE_BMP_RESOURCE type to the constructor, but you are likely to want a less platform-specific method.
A portable way to package resources, whether they are bitmaps, HTML files, or other files required by an application, is to store them in a single zip file alongside the executable or in a separate data folder. Then you can use the virtual file system functionality in wxWidgets to load the image directly from the zip file, as the following fragment shows.
Использую последний способ. Можно конвертить в C-array и встраивать в проект ( http://wiki.wxwidgets.org/Embedding_PNG_Images ) с помощью: http://priyank.co.in/sites/default/files/bin2c.7z Но тут надо варнинги "давить". Где-то видел более подробный пример по ембеддеду, но сходу ссылку не вспомню.
If you come from a Windows programming background, you are accustomed to loading bitmaps from the resource section of the executable. You can still do this by passing a resource name and the wxBITMAP_TYPE_BMP_RESOURCE type to the constructor, but you are likely to want a less platform-specific method.
A portable way to package resources, whether they are bitmaps, HTML files, or other files required by an application, is to store them in a single zip file alongside the executable or in a separate data folder. Then you can use the virtual file system functionality in wxWidgets to load the image directly from the zip file, as the following fragment shows.
Code: Select all
// Create a new file system object
wxFileSystem*fileSystem = new wxFileSystem;
wxString archiveURL(wxT("myapp.bin"));
wxString filename(wxT("myimage.png"));
wxBitmapType bitmapType = wxBITMAP_TYPE_PNG;
// Create a URL
wxString combinedURL(archiveURL + wxString(wxT("#zip:")) + filename);
wxImage image;
wxBitmap bitmap;
// Open the file in the archive
wxFSFile* file = fileSystem->OpenFile(combinedURL);
if (file)
{
wxInputStream* stream = file->GetStream();
// Load and convert to a bitmap
if (image.LoadFile(* stream, bitmapType))
bitmap = wxBitmap(image);
delete file;
}
delete fileSystem;
if (bitmap.Ok())
{
...
}
Использую последний способ. Можно конвертить в C-array и встраивать в проект ( http://wiki.wxwidgets.org/Embedding_PNG_Images ) с помощью: http://priyank.co.in/sites/default/files/bin2c.7z Но тут надо варнинги "давить". Где-то видел более подробный пример по ембеддеду, но сходу ссылку не вспомню.
А как сделать так, чтобы руками не изменять? Я сделал проект в wxFormBuilder'е если я внесу изменения, билдер в очередной раз мне все мои изменения снесет.T-Rex wrote:Для подгрузки из ресурсов вроде есть макросы специальные - wxBITMAP() и wxICON() - туда надо строковое имя ресурса скармливать без кавычек. wxICON точно есть
Я указываю в билдере чтобы он брал картинки из ресурсов. программа при запуске ругается (не по русски). Чего то у нее не получается сделать. Но ресурс как я понял она находит т.к. если имя ресурса изменить, то ругается по другому, примерно так: ... not found ...
В общем нужно как то прямо в билдете указывать имена картинок, а что дальше не понятно.
Может кто то подскажет как сделать так, чтобы брались картинки из запускаемого файла?
Никто картинки не использует на кнопках?
Смотрите приложенный файл. Есть программа. Если запускать ее не из этой директории (куда распаковали), а по ссылке например с рабочего стола, то программа ищет картинки в той директории из которой ее запускают. т.е. будет искать картинки на рабочем стола.
Нужно сделать так, чтобы программа брала картинки из ресурсов программы.
Помогите пожалуйста кто знает.
Никто картинки не использует на кнопках?
Смотрите приложенный файл. Есть программа. Если запускать ее не из этой директории (куда распаковали), а по ссылке например с рабочего стола, то программа ищет картинки в той директории из которой ее запускают. т.е. будет искать картинки на рабочем стола.
Нужно сделать так, чтобы программа брала картинки из ресурсов программы.
Помогите пожалуйста кто знает.
- Attachments
-
- GNU-Linux-x86.tar.gz
- (77.25 KiB) Downloaded 210 times
Открыл файл gui.cpp в нем написано:
Эта кнопка берется из ресурсов:
m_bp_add = new wxBitmapButton( this, wxID_ANY, wxBitmap( wxT("res/add.bmp"), wxBITMAP_TYPE_RESOURCE ), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
bSizer111->Add( m_bp_add, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
Эта кнопка из внешнего файла:
m_bp_change = new wxBitmapButton( this, wxID_ANY, wxBitmap( wxT("res/CHANGE.bmp"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
bSizer111->Add( m_bp_change, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
Ругается на кнопку которая берется из ресурсов.
Эта кнопка берется из ресурсов:
m_bp_add = new wxBitmapButton( this, wxID_ANY, wxBitmap( wxT("res/add.bmp"), wxBITMAP_TYPE_RESOURCE ), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
bSizer111->Add( m_bp_add, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
Эта кнопка из внешнего файла:
m_bp_change = new wxBitmapButton( this, wxID_ANY, wxBitmap( wxT("res/CHANGE.bmp"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
bSizer111->Add( m_bp_change, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
Ругается на кнопку которая берется из ресурсов.