Implementing something like a draw app

Hi,
I'm planning to develop an application that will be similar to a
simple version of photoshop.
I will want to allow adding objects to a "drawing area",
and then being able to move\resize\delete them inside this area,
and zoom in\out the whole "drawing area".

I'm an experienced developer, with no experience with GUI
applications.
Can you please advise me on how to implement such a thing?

directly using wxDC.
But it looks like I'll need to implement a system similar to wxPython
itself
in order to handle these objects in the drawing area(Figuring out
which object was clicked and delivering events to it, resizing,
moving, ...).

I'll be thankful for any advise!

···

From my little reading of wxPython documents I figured I should draw

Plony wrote:

Hi,
I'm planning to develop an application that will be similar to a
simple version of photoshop.
I will want to allow adding objects to a "drawing area",
and then being able to move\resize\delete them inside this area,
and zoom in\out the whole "drawing area".

I'm an experienced developer, with no experience with GUI
applications.
Can you please advise me on how to implement such a thing?

>From my little reading of wxPython documents I figured I should draw
directly using wxDC.
But it looks like I'll need to implement a system similar to wxPython
itself
in order to handle these objects in the drawing area(Figuring out
which object was clicked and delivering events to it, resizing,
moving, ...).

I'll be thankful for any advise!

>

There's a number of solutions to this:

- FloatCanvas, part of wxPython - provides a nice zooming in/out
interface as well as a variety of shape drawing
- OGL - similar, implements a "shape" library which you can add/connect
to other shapes on a canvas
- Do It Yourself

I also maintain my own drawing program, Whyteboard which does all of
what you've said, besides zooming in/out. See,
Whyteboard in Launchpad for code which should help/guide you. I
have drawing, selecting, moving, resizing, recolouring, changing
thickness all implemented for a variety of shapes, and have just made
deleting shapes.

Of course, you could always write your own program which will help with
the learning process, which is what I did.

···

--
Steven Sproat, BSc
http://www.basicrpg.com/