[Gambas-user] Best control for a game

Peter Russell pete992000 at ...1683...
Sat Sep 6 10:16:46 CEST 2008


Maybe using a grid might be an option.

Regards Pete

On Sat, 2008-09-06 at 10:13 +0200, Tomas Eroles i Forner wrote:
> Ok, it seems to work fine.
> I can draw all the board without problems, but I have yet some
> questions:
> 
> I'm drawing the board after a menu command. If after the drawing the
> board I click on Maximize button, the board is erased and I have to draw
> it another time. How can I solve that?
> 
> Other question: the board is a 15x15 matrix, drawn by rectangles, and I
> would like to work with each rectangle, because I would like to paint
> some of them depending on their position (it will be stored on a file or
> on a database). Is possible to refer to a rectangle after it has been
> drawn? That is, may I draw all the rectangles and after that, while
> reading a file (or a table) put some colour on them (background property
> perhaps)? 
> 
> Thanks in advance for your answers, guys
> 
> 
> El dv 05 de 09 del 2008 a les 11:59 +0200, en/na Benoit Minisini va
> escriure:
> > On vendredi 05 septembre 2008, Doriano Blengino wrote:
> > > Werner ha scritto:
> > > > Tomas Eroles i Forner wrote:
> > > >> commands in a Draw.Begin(DrawingArea)...Draw.End group of code.
> > > >>
> > > >> It seems to work, but, I see that you can start drawing if you put a
> > > >> command button, or a menu or something like this, but it does not work
> > > >> in a Form_Open event.
> > > >>
> > > >> Is it like this?
> > > >
> > > > However, it is much more practical to use the drawing area's draw event
> > > > http://gambasdoc.org/help/comp/gb.qt/drawingarea/.draw
> > > >
> > > > because it will also deal with needs to redraw that come from outside the
> > > > application i.e.other applications' windows that were partially
> > > > overlapping. Have a look at the "Analog Watch" example.
> > >
> > > Werner is right but, perhaps, you can still get what you want if you set
> > > the "Cached" property of the DrawingArea.
> > > By setting that property, the DrawingArea repaints automatically itself
> > > when needed; whether to go this way or the other depends on several
> > > factors: dimension of the drawing, complexity of the drawing, complexity
> > > of the code needed to remember what to draw...
> > >
> > > I suppose that the main difference between the two methods is this. If
> > > you use the Cached property, your code can update the drawing when it
> > > wants; the result is a cached bitmap that can consume a lot of memory,
> > > but still is a simple bitmap. This is the easiest way. If you don't use
> > > the Cached property, your code to update the drawing is called every
> > > time the DrawingArea "unveals". If this code is fast, then this method
> > > is better. However, this second method is a little more complicated to
> > > understand: when the program, asynchronously, wants to change the
> > > appearance, it can Draw() directly, 
> > 
> > You cannot draw directly on a DrawingArea if it is not cached (even if it 
> > actually allowed at the moment). 
> > 
> > Drawing must be done inside the Draw event only. 
> > 
> > If you need to refresh the DrawingArea, you must call its Refresh() method.
> > 
> > When the DrawingArea is cached, it maintain a pixmap cache (like a Picture 
> > object), so you can draw inside it whenever you want.
> > 
> > Regards,
> > 
> 
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
> 





More information about the User mailing list