2012-06-15 61 views
0

我想用FLTK在C++程序中繪製一個xpm文件。FLTK繪製pixmap給出了段錯誤

下面的代碼

#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是 「image.xpm」

內有效的XPM對象,但我在pix.draw()線得到一個分段錯誤。
這是什麼原因造成的?

+1

Everything?沒有?老實說,現在不可能回答你的問題。至少編輯你的問題以包含'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()方法,而在fltk中很少有效的AFAIK。

你可能想問一下他們的郵件列表 - 他們是非常敏感的。

另外,您是否在tarball的「test」文件夾中查看了pixmap演示文件 - 查看它做了什麼,然後複製它!