From: Lyle J. <ljo...@re...> - 2001-05-23 13:54:09
|
> I am an EiffelFox user, and i tried to compile the scribble > example. The EiffelFox scribble > program is a direct Eiffel conversion of the Fox C++ test > program. Both versions have the > same behavior. > I noticed that whenever a paint event is triggered, the rectangle > that is specified by the paint > event is repainted to the color of the background. This means > that if you have painted > something on the canvas and you place another window on the > canvas surface, the rectangle > that is considered to be dirty is repainted. In this way the > drawn figure is lost. > Is it possible to store the information ( data bits ) that are > represented on the canvas in order > to refresh the canvas by using the saved information as the > source of repainting ? I haven't worked with the EiffelFox bindings, but generally speaking you have at least a couple of options: 1. Instead of drawing directly into the FXCanvas, draw into an offscreen buffer (i.e. an FXImage object that is the same size as your canvas) and then copy that image to the canvas using FXDC::drawImage(). 2. As you draw a new line segment during a mouse motion event, save its coordinates in a list of some kind so that you can programmatically reproduce the drawing later by looping over the segments in that list and calling FXDC::drawLine(). Hope this helps, Lyle |