> 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