Canvas (GUI)
In computer science and visualization, a canvas is a container that holds various drawing elements (lines, shapes, text, frames containing others elements, etc.). It takes its name from the canvas used in visual arts. It is sometimes called a scene graph because it arranges the logical representation of a user interface or graphical scene. Some implementations also define the spatial representation and allow the user to interact with the elements via a graphical user interface.[1]
Library support
Various free and open-source canvas or scene-graph libraries allow developers to construct a user interface and/or user-interface elements for their computer programs.[2]
Examples of free and open-source scene-graph canvas options include:
- in C, Evas (in EFL) from the Enlightenment project
- in C, Clutter, associated with the GNOME project
- in C, GTK Scene Graph Kit (GSK)
- in C++ or optionally in Qt's own markup language QML: Qt Quick, provides a scenegraph associated with the Qt project
- in C++, OpenSceneGraph, a 3D graphics API using OpenGL
- in C++, the OGRE engine, based on a scene graph, supports multiple scene managers
- in C++, OpenSG, a scene-graph system for real-time graphics, with clustering support and multi-thread safety
- in C++, the FlightGear Flight Simulator uses a custom Canvas system (LGPL'ed via SimGear[3]) that is hardware-accelerated using OpenSceneGraph/OpenGL, OpenVG/ShivaVG:[4] The FlightGear Canvas system
- in Java, the Java FX scene graph with 2D and 3D functionality
- in Tcl and other languages such as Perl, Python (Tkinter[5]), and Ruby, the Tk toolkit provides a
canvas
widget for 2D graphics[6][7] - in Tcl[8] and other languages such as Perl[9] and Python,[10] TkZinc is an extended replacement for the Tk canvas, which adds support for hierarchical grouping, clipping, affine transformations, anti-aliasing, and specific items for air traffic control.
Some canvas modules within various libraries do not provide the power of a full scene-graph - they operate at a lower level which requires programmers to provide code such as mapping mouse-clicks to objects in the canvas. Examples of libraries which include such a canvas module include:
- in C++, KDE Plasma Workspaces Corona canvas
- the Canvas element in HTML5
- for Java, the AWT library Canvas
- for Java, the Java FX library Canvas[yes|permanent dead link|dead link}}]
- for Java, the Swing library Canvas
- for Java, the SWT library Canvas, associated with Eclipse
- for Java-like JavaScript, the GWT library Canvas
- in C++, the papyrus Canvas library which renders using the Cairo (graphics) library
- in C, crcanvas, a GTK canvas widget which renders using the Cairo (graphics) library
- in C, GooCanvas, a GTK canvas widget which renders using the Cairo (graphics) library
Proprietary canvas libraries include, for example:
- the Microsoft Windows Win32 Canvas
References
- ↑ "tk-zinc-3.303 - TkZinc is another Canvas which proposes many new functions, some based on openGL - metacpan.org". https://metacpan.org/release/ZINCDEV/tk-zinc-3.303.
- ↑ "Snelle WordPress hosting bij mijn.host.". mijn.host. 3 June 2017. https://mijn.host/wordpress-hosting/. Retrieved 28 June 2019.
- ↑ "Gitorious.org Git - fg:simgear.git/Summary". https://gitorious.org/fg/simgear.
- ↑ "Canvas Development - FlightGear wiki". http://wiki.flightgear.org/Canvas_Development.
- ↑ "GUI Programming with Python: Canvas Widget". https://python-course.eu/tkinter_canvas.php.
- ↑ "TkDocs - Tk Tutorial - Canvas". https://tkdocs.com/tutorial/canvas.html.
- ↑ "canvas manual page - Tk Built-In Commands". http://tcl.tk/man/tcl8.6/TkCmd/canvas.htm.
- ↑ "zinc". https://wiki.tcl-lang.org/page/zinc.
- ↑ "tk-zinc-3.303 - TkZinc is another Canvas which proposes many new functions, some based on openGL - metacpan.org". https://metacpan.org/release/ZINCDEV/tk-zinc-3.303.
- ↑ "TkZinc - Python Wiki". https://wiki.python.org/moin/TkZinc.
Original source: https://en.wikipedia.org/wiki/Canvas (GUI).
Read more |