The SimDesignerCanvas is an advanced canvas control replacement for the standard Xojo Canvas control. It allows for rapid custom control development, object-oriented image handling, and automates designer interface implementation by allowing objects to be manipulated by code or drag-n-dropped. Like the Xojo IDE, it features custom object locking capabilities, visual object alignment bars, and resizable handles. The SimDesignerCanvas also features picture object layering with move forward, backward, move to the front, and move to the back. Transparencies can be maintained, and the SimDesignerCanvas can save and load entire layouts with all objects and settings in XML format. The XML format can be saved directly to file or be obtained as a string for custom project file formats, for storing in a database, or used in another manor. Any and all features can be enabled, disabled, and customized from the Xojo Inspector, or by code. Picture (CanvasObject) objects within the SimDesignerCanvas can also store properties for use in designer IDE’s or other purposes. Objects in the SimDesignerCanvas also handle events such as MouseEnter (Hover), MouseExit, ObjectMoved, ObjectCreated, ObjectResized, ObjectResizing, GotFocus (ObjectSelected), and many more (plus the standard Canvas Event Handlers), and images can be dynamically changed within these events, or anywhere within your code as desired. Built-in functions also include Object rotation and Vertical/Horizontal mirroring. Even better, if an object has been removed, the SimDesignerCanvas can undo the remove event by calling a single function at any time (even after manipulating other objects). Any picture can be added to the SimDesignerCanvas as a CanvasObject, and a few built-in CanvasObjects are automatically supported such as Shapes (adding Quadrilaterals (squares, rectangles) and Ovals; supporting PenWidth, PenHeight, and PenColor), Text Only Objects (drawn text elements with custom Font, TextSize, and TextColor), Drawable Objects (CanvasObjects which can recieve mouse/pen input and be drawn on with custom PenWidth, PenHeight, and PenColor). Objects can even accept a Caption parameter for use in labeling objects or creating custom buttons, with no additional code required. You can export the entire canvas into a variety of formats such as PNG, Pict, JPG, GIF, BMP, and TIFF; supporting transparencies (if the image format supports transparencies) or call the FlattenedImage function, returning a Picture object of the entire canvas for use elsewhere in your software. Extending the CanvasObject Class is easy since it can accept any Graphics/Picture class objects, and all CanvasObject properties and custom properties can be accessed at any time, anywhere. StyledText objects are also supported and can be added to the canvas and moved around and resized freely, preserving their properties, and automatically handle word-wrapping. One of the best features of the SimDesignerCanvas is its ability to also export the entire canvas (all CanvasObjects and Backgrounds) in HTML format converting StyledText, object sizing and positioning, background position and sizing, all into native HTML elements! It is truly a “What you see is what you get” (WYSIWYG) Canvas control that is easy to use, and removes the complexities of designer interface development, so you can work on other faculties of your software immediately. All the common tasks and picture object management is handled for you!
The source code included in the download contains the SimDesignerCanvas control, and a full demo application featuring all of the built-in functions, a ReadMe outlining all available functions, properties and abilities, plus demo XML project formats that can be loaded by the demo application.
Exporting to pure RTF format including StyledText and images is currently under development.
HTML Export Demo (See included XML project HTML-Demo.XML) http://www.xojodevspot.com/demos/HTMLDemo.html
The control has been commercially tested in a variety of software from electronic circuit board/PCB design,
story/article publication software, HTML editors, and even a non-public iOS compiler called Simulanics iBuilder 2.0, written entirely with Xojo!
It has been tested in numerous applications, and for the first time ever, will be made available to the public here.
If you have any suggestions, need help, or would like to use this control commercially or in your own software, please feel free to contact me.