When developing a graphical editor there are two options when creating a canvas:

  1. a canvas that has a constant size
  2. a canvas that can be re-sized by adding figures at the edge of the canvas, or by moving existing figures to a location outside the canvas (which causes it to resize).

On the one hand, letting the user decide the where to put his figures and letting him re-size the diagram gives him more power, but the drawback is that the user can create very large and complex diagrams that are then impossible to understand. The problem with constant sized diagrams is that their size is probably dependent on the size (and orientation) of the screen used by the user.

So basically, what is the best option? and if the best option is a static sized canvas, how should I calculate the size?


3 Answers 3


Option 2 is probably the way to go.

Leave the decision about what size the image can be up to the user, don't assume that you know best in this instance. If they decide that they want to make a massive and illegible image that can't be printed because it's 4 metres wide, then that's up to them really.

Ask yourself this question: What would annoy users more - being forced to use an application that has a set dimension, or being able to create large complex images that are harder to understand?

Here is another way of looking at it:

  • If someone creates a massive complex and annoying image that nobody understands, the person who will get criticised for that is that person themselves, not the tool.
  • If the tool restricts them to a set size but they want something bigger then the criticism will fall to the tool.

I would suggest that a third option would be better.

Have an infinite canvas area (or one that grows as needed), but have a defined page area on the canvas that can be resized in settings. This is the approach that most vector drawing programs (such as Inkscape or Illustrator) use.

It has the advantage of allowing a rough work area by simply drawing outside of the page, and it also allows you to easily visualise your drawing in the context of the page size.

Most people will work with a specific size in mind which rarely changes during the process. However when it does, it's usually a conscious choice, and for that a setting makes the most sense.

Example from Inkscape:

enter image description here


There are conceptual problems with option #2 in that this automatic enlargement can be surprising. And what happens if something is moved inward, does the canvas shrink? Does the canvas always shrink to be as small as possible? Can I only resize it by repositioning elements? This elastic magic boundary pattern works for some systems (like the Balsamiq mockup system used by this site) but would be conceptually clumsy in others (Photoshop, Illustrator) that really benefit from the formalism of an explicit size.

So I would be on the lookout to see if the elastic magic boundary model might cause these conceptual problems in your system.

There is another option, which is to allow the user to explicitly set the canvas size, either by entering numbers or directly manipulating (mouse resizing) the canvas.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.