Latest update Dec 19, 2022

A Simple Graphics Editor

One or two persons, level of ambition accordingly. Experience with .NET GUI programming is a clear advantage.

In this project you will implement a simple editor for 2D graphics. The graphics consists of geometrical 2D figures placed on a surface. The editor should have at least these features:

The above is sufficient for a one person project. For two persons, the additional functionality is required:

The interested student may extend the project in a number of ways, including adding more shapes, introducing connectors between shapes, adding text boxes, etc.

The code should be "functional style", which means that the use of side-effects should be minimized. You will need to somehow keep the state of the 2D graphics scene, of course. Think carefully about which kind of data structure(s) you will need to represent the scene, and design your editing operations on the scene as functions on this data structure.

It is important that your report contains a decent "user manual" for your editor (unless it is very self-explanatory), so it becomes easy for us to test it.

Hints: You need to gather some information about GUI programming in .NET. Sections 8 and 11 in the previous course book Don Syme, Adam Granicz, Antonio Cisternino: Expert F# 2.0 give a good account for windows and event handling in F#. The book does, however, not say a whole lot about how to use geometrical shapes, and colours: it merely gives a few examples. The namespace System.Drawing contains a number of useful data types and operations. This is really a general .NET namespace: online documentation is found here.


Björn Lisper
bjorn.lisper (at) mdu.se