Добрый день.
В основном пишу консольные программки, но возникла задача написать простенькую программку, которая бы выводила RGB битмап в окно. Раньше писал некоторые "графические" программки под винду, и как вывести изображение с помощью winapi в курсе. Сейчас же работаю в линуксах, и т.к. от гуи требуется только вывод одной картинки (хотя, было бы неплохо реализовать анимацию; но тоже в рамках простой смены кадров, которые выводились бы в определенную область окна) разбираться в графических библиотеках (wxWidgets, gtk, qt) лениво. Поэтому прошу знатоков привести пример простой программы создающей окно и отобразить на нем битмап. Либо ткнуть на уже готовый пример. Быстро пробежавшись по гуглу, осилил только создание главного окна используя wxWidgets (по gtk и qt еще не искал; исключительно субъективно — не хочется их трогать; хотя, если с их помощью можно решить задачу просто, то тоже пойдет).
#include <wx/wx.h>
using namespace std;
class MWND : public wxFrame
{
public:
MWND(const wxString& title);
};
MWND::MWND(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800, 600))
{
Centre();
}
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
MWND *mwnd = new MWND(wxT("TITLE"));
// подозреваю, где-то здесь нужно что-то типа: mwnd->AddControl(new wxBitmap("tmp.bmp"))
mwnd->Show(true);
return true;
}
Все — дальше затык. Почитал (поискал по форуму) про wxBitmap — но как его "вставить" в окно так и не разобрался (в основном, все примеры на форуме
http://wxforum.shadonet.com уж слишком монстрообразные и без разучивания апи мне не поддались
Еще хочу добавить: битмап генерируется непосредственно в памяти (т.е. на диск *.bmp не ложится), поэтому хотелось бы непосредственно выводить из: char *rgb_buf; //просто область памяти по три байта (rgb) на на пиксель. Но на данный момент это непринципиально...
Заранее благодарен
Сергей
03.03.08 13:28: Перенесено модератором из 'C/C++' — Odi$$ey