- Rough.js adalah library JavaScript ringan untuk membuat grafik bergaya sketsa yang tampak seperti digambar tangan, bukan bentuk digital yang tajam
- Ukurannya kecil, kurang dari 9 kB dalam kondisi gzipped, tetapi dapat menangani garis, kurva, busur, poligon, lingkaran, elips, hingga SVG path
- Mendukung Canvas dan SVG dengan alur API yang sama, sehingga Anda dapat memilih
rough.canvas() atau rough.svg() sesuai target rendering
- Selain isian default hachure, library ini mendukung
solid, zigzag, cross-hatch, dots, sunburst, dashed, dan zigzag-line
- Opsi seperti
roughness, bowing, strokeWidth, hachureAngle, dan hachureGap dapat digunakan untuk menyesuaikan goyangan garis dan kerapatan isian
Library ringan untuk menggambar bentuk bergaya gambar tangan
- Rough.js adalah library JavaScript untuk membuat grafik bergaya sketsa
- Ukuran library ini kurang dari 9 kB dalam kondisi gzipped
- Mendukung bentuk dasar sekaligus path
- Garis
- Kurva
- Busur
- Poligon
- Lingkaran
- Elips
- SVG paths
- Target rendering dapat menggunakan Canvas maupun SVG
Instalasi dan penggunaan dasar
npm install --save roughjs
- Di kode, impor dan gunakan
roughjs
import rough from 'roughjs';
- Pada Canvas, buat konteks dengan
rough.canvas(), lalu gambar bentuk
const rc = rough.canvas(document.getElementById('canvas'));
rc.rectangle(10, 10, 200, 200); // x, y, width, height
- Pada SVG, buat node dengan
rough.svg() lalu tambahkan ke SVG
const rc = rough.svg(svg);
let node = rc.rectangle(10, 10, 200, 200); // x, y, width, height
svg.appendChild(node);
- API dasar untuk menggambar lingkaran, elips, dan garis juga tersedia
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
Menyesuaikan isian dan ekspresi sketsa
- Isian diatur dengan
fill dan opsi terkait
fill: 'red' menggunakan isian hachure berwarna merah
fillWeight menyesuaikan ketebalan garis hachure
hachureAngle dan hachureGap mengubah sudut dan jarak hachure
fillStyle: 'solid' dapat digunakan untuk isian warna solid
rc.circle(50, 50, 80, { fill: 'red' });
rc.rectangle(120, 15, 80, 80, { fill: 'red' });
rc.circle(50, 150, 80, {
fill: "rgb(10,150,10)",
fillWeight: 3
});
rc.rectangle(220, 15, 80, 80, {
fill: 'red',
hachureAngle: 60,
hachureGap: 8
});
rc.rectangle(120, 105, 80, 80, {
fill: 'rgba(255,0,200,0.2)',
fillStyle: 'solid'
});
- Gaya isian yang didukung adalah
hachure, solid, zigzag, cross-hatch, dots, sunburst, dashed, dan zigzag-line
- Goyangan garis dan ekspresi garis tepi dapat diubah dengan opsi seperti
roughness, bowing, stroke, dan strokeWidth
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 path dan dokumentasi API
- String SVG path dapat digambar dengan
rc.path()
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' });
1 komentar
Opini Hacker News
RoughNotation(https://roughnotation.com/) juga layak dilihat. Menggunakan RoughJS untuk mendukung garis bawah, highlight, dan sebagainya
Situs web saya juga sebagian terinspirasi dari ini; coba arahkan mouse ke judul yang di-highlight: https://muxup.com/
Cara implementasinya saya rangkum di https://muxup.com/2022q3/muxup-implementation-notes#randomly-generated-title-highlights, dan kalau dibuka, Anda bisa melihat bahwa kode aslinya benar-benar sedikit
Mungkin ini perilaku yang disengaja, tetapi kalau bukan, saya tinggalkan sebagai masukan. Lingkungan saya Chrome/Linux
Materi terkait:
Show HN: Sketchy-appearance interactive timeline made using RoughJS - https://news.ycombinator.com/item?id=29563678 - Desember 2021, 1 komentar
Rough.js – Create graphics with a hand-drawn, sketchy, appearance - https://news.ycombinator.com/item?id=29555853 - Desember 2021, 23 komentar
Show HN: Hand-drawn timelines using RoughJS - https://news.ycombinator.com/item?id=23998225 - Juli 2020, 1 komentar
Rough.js – Create graphics with a hand-drawn, sketchy, appearance - https://news.ycombinator.com/item?id=22787187 - April 2020, 13 komentar
Rough.js v4.0 – hand-drawn, sketchy graphics - https://news.ycombinator.com/item?id=22141526 - Januari 2020, 20 komentar
Show HN: RoughJS – Create hand-drawn graphics using JavaScript - https://news.ycombinator.com/item?id=16571827 - Maret 2018, 92 komentar
Show HN: Rough.js simple lib to create hand-drawn, sketchy, scribbly graphics - https://news.ycombinator.com/item?id=13662347 - Februari 2017, 1 komentar
Wired Elements adalah kumpulan web component dari penulis yang sama, dan melakukan rendering bergaya sketsa dengan Rough.js
Berjalan di framework apa pun
https://wiredjs.com/
Saya menggunakannya bersama https://wiredjs.com saat membuat mockup interaktif. Contohnya seperti di bawah ini
https://edea-dev.gitlab.io/mockups/ (sumber: https://gitlab.com/edea-dev/mockups)
https://otfn.development.fabcity.hamburg/git-pdm-mockups/
Mengingatkan saya pada https://excalidraw.com/
Pembaruan: ternyata memang ada kasus seperti https://github.com/excalidraw/excalidraw/issues/362
Dulu saya membuat roughviz, sebuah library visualisasi data berbasis RoughJS
https://www.jwilber.me/roughviz/
Penulisnya, Preet, juga membuat banyak proyek keren lain, jadi situsnya juga layak dicek: https://shihn.ca/creations/
Saya menggunakan Rough.js untuk mengimplementasikan generator Sketchify di Boxy SVG (https://boxy-svg.com/ideas/23)
Yang terutama bagus dari Rough.js adalah dependensinya sangat sedikit dan bisa dijalankan di dalam web worker
Library yang luar biasa. Saya memakainya saat membuat wrapper svg2roughjs untuk mengubah file SVG biasa menjadi bergaya sketsa: https://github.com/fskpf/svg2roughjs
Rough.js sangat menarik. Saya menggunakannya untuk menggambar data grid di https://www.vanillacomponents.com/
Saya suka Rough.js. Saya menggunakannya saat membuat Sketchy Shapes yang bisa ditambahkan ke proyek Hatch
Seru untuk mengubah parameter secara real-time: https://hatch.one/@darrin/sketchy-shapes/edit