CodePaint is a vector drawing software developed in Java by Christophe Leblanc in 2016 as part of personnal studies about programming and graphics. It is the result of many hours of learning, reflection and work. At the moment of its conception, CodePaint was the biggest sofware i have worked on.

Although incomplete and unable to compete with the largests graphics softwares, it is able to interfere with many aspects of vector drawing and even allows the export of images in SVG (Scalable Vector Graphics) natively.


In details:

  • Draw original shapes from primitive polygons or point-by-point
  • Create paths with points and curves (cubic and quadratic).
  • Manage fill and border colors (no gradients).
  • Management of a complete scene tree.
  • Possibilities of moving, deforming, turning, modifying, coloring, renaming, grouping and cloning the objects of the scene.
  • Zoom / Scroll the scene.
  • Loading and saving a scene in an original XML format inspired by SVG.
  • Export matrix images in JPG, PNG.
  • Export vectore images in SVG.
  • Selection of objects from the tree view or directly on the scene view.
  • Copy / Cut / Paste one or more objects in the same scene or another one.
  • Undo / Redo the last actions
  • Choose the size of the scene/image.
  • Bilingual English / French.
  • Keyboard shortcuts.
  • Multi-plateform (Java/Swing).



CodePaint is programmed in JAVA (version 8 - JDK 1.8) using NetBeans (last version used in the project: 8.1). It does not depend on any external library. Swing was chosen as a graphical interface for the simple reason that at the time of CodePaint's design, it was easier for me to program the CodePaint user interface visually in the "NetBeans" development environment. A rewrite of the program for using the JavaFX GUI was considered before being dropped.

Vector drawing:

This software allows you to create vector drawings in solid colors and does just that. You can not create color gradients or embed a raster image in the scene.

Scene Management:

CodePaint has an efficient scene manager that can handle a complex tree of groups and objects, with each node in the tree that can be renamed or moved.


This software allows the selection and manipulation of several objects at the same time, even if they are not in the same group or if they are separated from each other by other objects on the "axis Z ". A multi-layer display of the scene is assured when the selection requires it.

Backup format:

The backup format used to load or save a scene is an original format inspired by SVG and respecting the XML standard. After studying and using different possibilities during the evolution of the program, this choice was made to satisfy the needs of compatibility with "the outside world".

Exporting images:

Matrix image export is performed by the Swing function dedicated to Canvas capture. The vector image export is performed by original generator.

Render Engine:

The rendering engine used is Swing's. Hardware acceleration is unavailable.


CodePaint is available in two different languages, English and French. It is equipped with a Language Manager that uses a HashMap loaded at the launch of the program with the values ​​corresponding to the selected language. The texts used in the software are contained in the code and compiled with it.


Create a new scene:

[Topmenu] > File > New

Save a scene:

[Topmenu] > File > Save as

Add a polygon:

If a scene is active, right-click on the scene view to open a menu and choose "Add". Or, in the scene panel (at right), click on the button "+" on top of the scene tree view.

Select one or several objects:

There are different ways to select objects in CodePaint. You can select objects by selecting them in the scene tree view or directly by clicking on them in the scene view. Use your keyboard key "Control" ("CTRL") to add or remove objects to the selection. Is also possible to use the "rectangular" selection tool to select several objects at same time by using the key "Space" of your keyboard.

Translate, Rotate, Scale:

Choose the desired mode in the toolbox. Select one or several objects and apply the transformation by dragging the mouse on the scene view.

Remove an object:

Select one or several objects and right click on the scene view to open a menu and choose "Delete". Or, in the scene panel (at right), click on the button "-" on top of the scene tree view.

Clone an object:

Go in the scene panel (at right) and click on the button "++" on top of the scene tree view.


This program is free software, you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation either version 2 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.



Creative Commons License

This document by Christophe Leblanc is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.