From: jeroen <je...@fo...> - 2002-03-31 15:15:45
|
On Sunday 31 March 2002 00:09, you wrote: > Hello > > My name is Hector Perez, I am starting my Phd thesis project and I am in > the middle of decision to use Ruby with FOX or Java > > I am experimenting with the first option and I hava a question: > > How can I make a scrollable canvas ? 1) You can use FXScrollWindow, which can contain one single child widget of any type. FXScrollWindow measures this child widget and adjusts the scrollbars accordingly, if the child is larger than the FXScrollWindow itself. This approach is most useful when you need to scroll gui controls. 2) The other approach is to subclass from FXScrollArea, and overload moveContents(), getContentWidth(), and getContentHeight(). Usually, onPaint() is overloaded as well. onPaint() uses the members pos_x and pos_y to translate the original content drawing. Coordinates of windows are limited to 16 bits (both under Windows and under X11), so approach (1) is limited to contents of 32767 by 32767 pixels. Approach (2) is done in client space and uses 32 bit integers, so the contents can be very large, 2147483647 by 2147483647 pixels. > I want to draw some things but perhaps there will be bigger that the canvas > space and I need the posibility to have scroolls there. > > does the FOX lib has that facility? The answer is yes. Most scrollable widgets in FOX use approach (2), for example the FXText and FXTable widgets. This gives virtually unlimited content sizes, as the content is drawn on demand in the client code (the system never sees coordinates outside of the screen so the limit on coordinate ranges does not apply). Approach (1) is most often used to scroll gui controls. - Jeroen -- +----------------------------------------------------------------------------+ | Copyright (C) 09:00 03/31/2002 Jeroen van der Zijp. All Rights Reserved. | +----------------------------------------------------------------------------+ |