Help wanted on SIMPLE task

Bengt Nilsson bengt.nilsson11 at spray.se
Sun Mar 4 05:44:15 PST 2007


Thanks for the extensive suggestions.
I will try the inverted line first.
However, I cannot find anything about "inverted" in the wx docs.
How do I set it?

4 mar 2007 kl. 14.34 skrev Stephan Rose:

> On Sunday 04 March 2007 14:05, Bengt Nilsson wrote:
>> Hi!
>>
>> I am very new to wx programming and I need help on a simple task.
>>
>> How do I make a simple selection dragbox (using e.g. OnMouseEvent )
>> in a graphics window without destroying what's in it?
>>
>> I have the "Cross-Platform GUI Programming whith wxWidgets" book, and
>> I think I have seen the source listing for the method there, but I
>> just can't seem to find int.
>> I have gone thru it several times and failed.
>>
>> I do not want to paint anything in the graphics window, I just want
>> to make a flickering frame over the content to select an area to get
>> input to a zooming in function.
>>
>> Extremely standard, apparently too simple to be demonstrated in
>> wxWidgets samples, since I cannot find it there.
>
> There are multiple ways you can do this.
>
> First way is to draw all your stuff in your window to a backbuffer.  
> Then when
> you go draw your selection box, first copy your backbuffer to your  
> graphics
> window and then draw your selection box.
>
> This way you always have a copy of your original data without the  
> selection
> box in it.
>
> That is the way I'd recommend it.
>
> The other way is to use inverted lines to draw your selection box.  
> Using that
> method you do not need a backbuffer. An inverted line basically  
> draws itself
> by inverting pixels instead of drawing itself in a set color.
>
> If you invert the pixel again, it goes back to its previous color.
>
> So basically it works like this:
>
> - Draw box with inverted line
> - Mouse move
> - Draw box *again* with inverted line on previous coordinates
> - Draw new box now with inverted lines on new coordinates
>
> You basically draw the box twice each mouse move. Once to erase the  
> old box,
> then again to draw the new box.
>
> This was a very popular technique in the DOS and early windows days  
> as it
> requires very little CPU resources to implement.
>
> Drawback though is that it is easy to screw up. If your coordinates  
> get out of
> sync for any reason you will end up with pixels that stay inverted  
> until you
> redraw your entire view.
>
> Another way, this is how I do it, is to use hardware accelerated  
> drawing and
> simply draw the entire view every frame. That requires OpenGL  
> though. I can
> draw over 20,000 objects in less than 10ms on this system here so I  
> can
> afford to redraw the entire view every frame. =)
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: wx-users-unsubscribe at lists.wxwidgets.org
> For additional commands, e-mail: wx-users-help at lists.wxwidgets.org
>






More information about the wx-users mailing list