> Yes, I called drawline outside draw() function, now I know if 
> I put the drawline() into override draw() function will has 
> no such issue. But I still has question, because I use 
> drawline() function to implement a painter application, so if 
> I put the drawline() into draw() function, then it will call 
> lots of drawline() at each redarw(). So does fltk has a 
> better solution to implement a painter application? Thanks.


If you want to "build up" an image over many interactions, you basically
have two options...

A) You can keep a record of all the drawn lines and replay them every
time you draw() your widget.
You can just store them in a linked list (e.g. via the STL, or make your
own, or etc.)
The actual drawing doesn't usually take all that long, so you might find
this works very well.
Note that this way makes it *very easy* to implement an undo function -
you can simply delete the last few entries off the end of the
linked-list and redraw, and that's the edit undone!

Also, this approach makes it very easy to store your drawing in a vector
format, since you have all the individual line vectors available to
store.


B) Use an offscreen to do the drawing. This will not be cleared between
redraws, so you can build up a drawing over time in the offscreen
surface, then blit that to the onscreen window for the operator to see.

This is maybe more like what you had in mind, where the drawing is built
up over time, and only the changes are actually drawn in each redraw
(not the whole thing.)

But this makes it very hard to implement an undo function, and can
usually only be stored in a pixel format, not a vector format.


Anyhow, either way works, so you can easily try both then see which
suits your way of working best.

-- 
Ian


SELEX Galileo Ltd
Registered Office: Sigma House, Christopher Martin Road, Basildon, Essex SS14 
3EL
A company registered in England & Wales.  Company no. 02426132
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************

_______________________________________________
fltk mailing list
fltk@easysw.com
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to