Matthias Melcher schrieb:
> 
> Use fl_transform_x() and fl_transform_y() to get the screen position for the 
> drawing. These function transform drawing coordinates into screen 
> coordinates. If you need to know the scale, use fl_transform_dx() and 
> fl_transform_dy().

Oh, yes, that was the missing part of the puzzle ;-P

And here it is:

static void drawQuit(Fl_Color c) {

        static Fl_PNG_Image *i = 0;
        if (!i) i = new Fl_PNG_Image("icon.png");

        int x = (int)fl_transform_x(0,0) - i->w()/2;
        int y = (int)fl_transform_y(0,0) - i->h()/2;

#if DRAW_BG
        fl_color(FL_WHITE);             // bg color
        fl_rectf(x,y,i->w(),i->h());    // draw bg
#endif
        i->draw(x,y);   // draw image
        fl_color(c);    // (re)set color
}

One thing to note is that the symbol's origin (0,0) is
centered, thus the correction after fl_transform_*().

Works nice. But can't rotate and scale the symbol, as all the
other symbol drawings can do. ;-)

Albrecht
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to