Simple Paint Application

Here's a screenshot of a typical "Paint" application:


It has the following features:

  1. The "pencil" or "brush" tool let you draw freely on the canvas.
    You can select the color from either Black, Red, Green, or Blue.
    You can also select from four different thicknesses.
  2. The "text" tool lets you add text on the canvas.
  3. The "line" tool lets you draw straight lines on the canvas.
  4. The "rectangle" tool lets you draw rectangles on the canvas.
  5. The "ellipse" tool lets you draw ellipses on the canvas.
  6. The "rounded rectangle" tool lets you draw rectangles with rounded corners.

There is no support for saving or opening files, no undo, no eraser, etc.

It can be easily implemented in WPF and C# by using a combination of InkCanvas and other built-in WPF controls.  The layout and look of the buttons is irrelevant and can be changed, as long as it's obvious what they do.

I am looking for the ability to write clean and elegant code that is easily maintainable.  I don't want to see messy code even if it successfully implements all of the features.  Research software will always evolve over time and if the code is too messy or too hard to change then it may get thrown away.  This doesn't mean that the code should be "reusable" or "extensible".  Rather, the code should be "evolvable", meaning it should be easy to understand and easy to change.

Comments (2)
  1. Arpit Garg says:

    I am a student of BITS PILANI.I have implemented similar kind of application in with 2-3 more features.Its real fun developing such applications!!I would love to contribute in developing any such types of application.

  2. Kael Rowan says:

    It’s always great to hear about students getting experience with .NET technologies.  In fact, Paint.NET ( was originally written as an undergraduate project. I’d encourage you to apply for an internship here at Microsoft by visiting and/or

Comments are closed.

Skip to main content