[ Web Proxy ]
URL:
Viewing: https://roughjs.com [Back]  [Original]

Rough.js

Rough.js

Create graphics with a hand-drawn, sketchy, appearance

View on GitHub Full API Twitter Sponsor this project
Star Fork

Rough.js

Rough.js is a small (<9kB gzipped) graphics library that lets you draw in a sketchy, hand-drawn-like, style. The library defines primitives to draw lines, curves, arcs, polygons, circles, and ellipses. It also supports drawing SVG paths.

Rough.js works with both Canvas and SVG.

Rough.js sample [Rough.js sample]

Install

Install from npm:

npm install --save roughjs

And use it in your code:

import rough from 'roughjs';

Usage

View Full Rough.js API is available on Github.

Rough.js rectangle [Rough.js rectangle]

const rc = rough.canvas(document.getElementById('canvas'));
rc.rectangle(10, 10, 200, 200); // x, y, width, height

or SVG

const rc = rough.svg(svg);
let node = rc.rectangle(10, 10, 200, 200); // x, y, width, height
svg.appendChild(node);

Lines and Ellipses

Rough.js rectangle [Rough.js rectangle]

rc.circle(80, 120, 50); // centerX, centerY, diameter
rc.ellipse(300, 100, 150, 80); // centerX, centerY, width, height
rc.line(80, 120, 300, 100); // x1, y1, x2, y2

Filling

Rough.js rectangle [Rough.js rectangle]

rc.circle(50, 50, 80, { fill: 'red' }); // fill with red hachure
rc.rectangle(120, 15, 80, 80, { fill: 'red' });
rc.circle(50, 150, 80, {
fill: "rgb(10,150,10)",
fillWeight: 3 // thicker lines for hachure
});
rc.rectangle(220, 15, 80, 80, {
fill: 'red',
hachureAngle: 60, // angle of hachure,
hachureGap: 8
});
rc.rectangle(120, 105, 80, 80, {
fill: 'rgba(255,0,200,0.2)',
fillStyle: 'solid' // solid fill
});

Fill styles can be: hachure(default), solid, zigzag, cross-hatch, dots, sunburst, dashed, or zigzag-line

Rough.js fill examples [Rough.js fill examples]

Sketching style

Rough.js rectangle [Rough.js rectangle]

rc.rectangle(15, 15, 80, 80, { roughness: 0.5, fill: 'red' });
rc.rectangle(120, 15, 80, 80, { roughness: 2.8, fill: 'blue' });
rc.rectangle(220, 15, 80, 80, { bowing: 6, stroke: 'green', strokeWidth: 3 });

SVG Paths

Rough.js rectangle [Rough.js rectangle]

rc.path('M80 80 A 45 45, 0, 0, 0, 125 125 L 125 80 Z', { fill: 'green' });
rc.path('M230 80 A 45 45, 0, 1, 0, 275 125 L 275 80 Z', { fill: 'purple' });
rc.path('M80 230 A 45 45, 0, 0, 1, 125 275 L 125 230 Z', { fill: 'red' });
rc.path('M230 230 A 45 45, 0, 1, 1, 275 275 L 275 230 Z', { fill: 'blue' });

SVG Path with simplification:

Rough.js rectangle [Rough.js rectangle] Rough.js rectangle [Rough.js rectangle]

Examples

Rough.js map [Rough.js map]

View examples here

API & Documentation

Full Rough.js API

Credits

Core algorithms for drawing lines and ellipse outlines were adapted from handy processing lib.

Algorithm to convert SVG arcs to Canvas described here was adapted from Mozilla codebase

Support this project

Support development of this project by sponsoring on Github Sponsors.
Alternatively, you can also sponsor or Open Collective.

This project is supported by:

excalidraw.png [excalidraw.png]
Excalidraw
A whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them.
cube.jpeg [cube.jpeg]
Cube
Headless BI for building powerful, fast, and consistent data applications.
1769238 [1769238]
Diagrams.net
Security-first diagramming for teams.
terrastruct.png [terrastruct.png]
Terrastruct
Diagramming tool specialized for software architecture.
sheetjs.png [sheetjs.png]
SheetJS
Spreadsheets simplified. Read, edit, and export spreadsheets. Works in web browsers and servers. Supports every Excel file format.
postermaker.png [postermaker.png]
Poster Maker
A free online poster maker. Design and create your own posters, flyers, memes and typography design.
chartle.png [chartle.png]
Chartle
A free online tool where you can create and make your own charts and graphs.

License

MIT License (c) Preet Shihn


Web Proxy Viewer  |  New URL  |  Original Page