Taking a picture from a file and displaying it in FLTK is a two-step process. First you read the file into an (invisible) image object, then you call the image() method of a visible widget with the image object as the argument. This enables you to use the same image many times, or change the displayed image, without re-reading the image file.
Using jpg image files is straightforward:
#include <FL.FL_Box.H> #include <FL.FL_JPEG_Image.H> ..etc... // A visible widget that will show the image Fl_Box* mypicturebox; // You can also put images on buttons etc. // This will be the invisible image object. Fl_JPEG_Image* myimage; ...etc... int main() { ...etc... myimage = new Fl_JPEG_Image("nicepic.jpg"); // Reads the file you have put in // the same place as the code. ...etc... mypicturebox = new Fl_Box(20, 20, 100, 100); // Make it the right size, empty for now. ...etc... mypicturebox->image(myimage); // Display or change the image whenever you like mypicturebox->redraw(); // (e.g. within a callback function)
Finally, it is necessary to tell the compiler to link in some library functions that handle the images. From the Quincy menu, select Tools|Options, and enter in the "Linker options" section -lfltk_images -lfltk_jpeg .
It is also possible to handle png images (the linker options in this case are -lfltk_images -lfltk_png -lfltk_z), and images that you construct from data in the program (see the Fl_Image documentation).
Here are the source code and image files (1, 2, 3) for a full example program. Don't forget to set the linker options.
MSC Nov 2005