Conspiracy Board

January 24, 2022


You've probably seen them in movies; entering the crazy guy's house, there on the wall, are dozens of photos pinned to a board, with strings tied between them to try and draw some mysterious conclusions. I'm not sure what else to call this arrangement, so I'll call it a "conspiracy board". The small .NET program presented here allows the arrangement of image files on a 2D plane, with the possibility to draw lines between them. The image outlines and connecting lines can be individually styled in terms of color and thickness. Images can be moved around and their linked lines will follow their position. The board can be saved as a .xml file which contains a list of nodes (images) and vertices (lines), and this can be loaded later to continue work (for best performance, all the images should be stored in the same directory as the .xml file). The program is fairly minimal and does not have any flashy animations, allowing for a lean no-frills workflow amidst numerous images and linking lines.

A screenshot demonstrating some possibilities with the Conspiracy Board software. Images of the digits 1-5 are imported and arranged in 2D, with different color lines drawn between them.


The program operates largely through a click-and-drag interface. It will only load images that are already saved on the disk, that is, it does not generate its own image files nor modify existing image files, but merely renders existing files in desired locations on a 2D plane. This arrangement is what can be adjusted visually and then saved to an .xml file. To prepare, you should collect the images of interest in a single folder (they may be in sub-folders, but they should have a common top directory to which the .xml save file will be referenced). Then open the software, and drag the images from a File Explorer window into the board area. When a valid image is detected, a red outline with the image size will be rendered as a preview of the drop location on the board. Release the mouse button over the board area to drop the image onto the board. Repeat for any additional desired images.

The elements on the board may be modified through clicking to select them, and using the toolbar buttons to make an adjustment. The toolbar buttons are shown below.

Toolbar buttons in the program.

In the first toolbar, file functions are presented. [New] will unload any existing data and start with a blank board. [Load] can be used to load a previously saved .xml file. [Save] can be used to save the visible board to a .xml file. Keep in mind that all images on the board are linked by their path. When saving, the folder where the .xml file will be written should be the top folder that includes all the images on the board. The saved paths for the images will be relative to this top folder, meaning that you can move (or copy etc) the top folder to some other location and the paths stored in the .xml board file will still be valid. An error will appear if your folder choice does not meet this criterion.

The second toolbar contains the tools and modifiers selections. [None] means clicking the mouse on the board will not do anything. [Line] means the mouse is used to draw new lines on the board. To start, click and hold down on one image, then drag the mouse towards an image to connect, releasing the mouse button when the connected image outline turns green. The new line will then snap to the centers of the two images. Lines cannot connect two images multiple times, nor connect an image to itself. [Select] means the mouse is used to select an existing line or image by clicking on it (or click an empty area of the board to deselect). [Drag] means the mouse is used to change the (x,y) position of existing images. To do this, click and hold down the image to move, then move the mouse to a desired position, and release. When dragging, the image outline is shown in the new location, but the image itself is only moved once the mouse button is released. [LF] or Line Follow, means that when drawing a new line, the color and thickness of the new line will match that of the border of the first image. [LC] or Line Carry, means that when drawing a new line, the border styling of the second image will be set to that of the first image. These features may be used to visually highlight a chain of influence.

The third toolbar contains styling parameters for selected objects (which are first selected using the [Select] tool). [(T+)] increases line thickness, [(T-)] decreases line thickness. The various color squares set the line color. [MDef] makes the style of the selected object into the default style for any new corresponding objects generated from that point. The fourth toolbar adjusts the size of selected objects. [(+)] [(-)] and [(Orig)] adjust the rendered size of a selected image (this does not resize the linked image file). [Delete] removes the selected image or line from the board (this does not delete the linked image file).

The fifth toolbar controls the overall view of the board. [Zoom In] [Zoom Out] and [Zoom Orig] adjust the zoom level of the whole board, and [Add Rgt] with [Add Btm] increase the horizontal and vertical extents of the board area.


The executable is available here. The source code is available here.

There is definitely room for improvement, such as with the board navigation, undo functionality, and adding text and other elements to the board. If you have an interesting application that could use these features, let me know, and I might work on this some more in my spare time.