2012-06-15 9 views
0

Я пытаюсь нарисовать xpm-файл в программе на C++ с FLTK.FLTK draw pixmap дает segfault

Вот код

#include <FL/Fl.H> 
#include <FL/Fl_Window.H> 
#include "image.xpm" 
#include <FL/Fl_Pixmap.H> 
#include <FL/fl_draw.H> 
#include <FL/Fl_Image.H> 
int main(int argc, char ** argv) 
{ 
    Fl_Window *window = new Fl_Window(800,650); 
    Fl_Pixmap pix(XFACE); 
    pix.draw(200,200); 
    window->end(); 
    window->show(argc,argv); 
    return Fl::run(); 
} 

XFACE является объект XPM внутри "image.xpm"

Но я получаю ошибку сегментации на линии pix.draw().
Что вызывает это?

+1

Все? Ничего? Честно говоря, на данный момент невозможно ответить на ваш вопрос. По крайней мере, отредактируйте свой вопрос, чтобы включить 'XPM', или, по крайней мере, начало и конец' XPM'. –

+0

Напишите SSCCE, пожалуйста (http://sscce.org/) или, по крайней мере, создайте веб-пасту где-нибудь, содержащую полный вывод ошибки ... Мое первое предположение - у вас либо нет действительного контекста FLTK, поэтому Fl_Pixmap делает не знаю, куда сделать себя, или XPM недействителен ... – DejanLekic

+0

ОК, я отредактировал. – Gonzo

ответ

3
/* Try this - this works for me, and I guess is what you meant! */ 

#include <FL/Fl.H> 
#include <FL/Fl_Window.H> 
#include <FL/Fl_Box.H> 
#include <FL/Fl_Pixmap.H> 

#include "image.xpm" 

int main(int argc, char ** argv) 
{ 
    Fl_Window *window = new Fl_Window(800,650); 
    Fl_Box *image_box = new Fl_Box(5, 5, 790, 640); 
    Fl_Pixmap pix(XFACE); 
    window->end(); 
    image_box->image(pix); 
    window->show(argc,argv); 
    return Fl::run(); 
} 

/* end of file */ 
0

Если честно, это даже не похоже на действительный код fltk; вы вызываете метод draw() напрямую, и AFAIK, который редко действует в fltk.

Возможно, вы захотите узнать в своем списке рассылки - они очень отзывчивы.

Кроме того, вы посмотрели демонстрацию pixmap в тестовой папке tarball - посмотрите, что она делает, а затем скопируйте ее!

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