Bảng dựng hình v1.0.0 Ví dụ
EN VI
Mở bảng vẽ

Dữ liệu

Bảng vẽ xuất ra hai dạng, dùng cho hai việc khác nhau.

Dạng Sửa lại được Dùng để
JSON Nạp lại vào bảng vẽ để chỉnh sửa tiếp
SVG / PNG Không Hiển thị hình cố định

Lưu JSON thì lần sau mở ra sửa được. Lưu riêng SVG thì chỉ hiển thị được.

Nhận#

board.getDocument()       // → Envelope
board.getDocumentJSON()   // → string
board.toSVG(options)      // → string | null
board.toPNG(options)      // → Promise<Blob>
board.exportImage(format, options)   // → Promise<ExportPayload>

Envelope là đối tượng đóng: { format, version, doc, view }. Cấu trúc bên trong doc là chi tiết nội bộ và thay đổi giữa các phiên bản — giữ nguyên vẹn, không sửa tay.

Cỡ điển hình: 0,9 KB JSON cho một tam giác có nhãn; 8 KB cho bản vẽ 70 đối tượng. SVG lớn hơn JSON khoảng một lần rưỡi.

Trả#

MathCanvas.init('#board', { document: envelope });
board.setDocument(envelope);

Nhận Envelope, Document trần ({ points, shapes }), hoặc chuỗi JSON của một trong hai.

Đầu vào được kiểm tra và làm sạch trước khi áp dụng: đối tượng hỏng hoặc không nhận diện được bị loại, phần còn lại giữ nguyên. Đầu vào không đọc được thì trạng thái không đổi và không có ngoại lệ nào được ném.

MathCanvas.parseDocument(raw) chạy đúng bộ luật đó mà không cần thực thể, trả null khi không đọc được.

version tăng khi lược đồ thay đổi phá vỡ tương thích; tài liệu cũ luôn mở được bằng phiên bản mới.

Tuỳ chọn kết xuất#

Tuỳ chọn Kiểu Mặc định Áp dụng
background string | null '#ffffff' SVG, PNG
padding number 10 Khoảng dư quanh hình, tính bằng pixel
scale number 2, hoặc 1 với ảnh lớn PNG

Khung ảnh ôm sát phần thật sự vẽ ra — kể cả chữ: tên điểm, số trên trục, nhãn bảng biến thiên — rồi chừa thêm padding mỗi phía. Lưới nền và lớp phủ thao tác không nằm trong đó.

Bản vẽ trống: toSVG() trả null; toPNG()exportImage() từ chối với Error('Chưa có hình để xuất'). board.isEmpty() cho biết trước.

Chuyển giao từ thanh công cụ#

Mặc định hai nút SVGPNG kích hoạt tải tệp về máy. Với onExport hoặc exportMode: 'handoff', chúng đổi biểu tượng thành mũi tên hướng lên và gọi onExport một lần cho mỗi lần bấm, không tải xuống.

MathCanvas.init('#board', {
  exportLabels: { svg: 'Chèn vào đề', png: 'Chèn ảnh' },
  onExport: (payload) => { /* … */ },
});

ExportPayload#

Trường Kiểu Có ở
format 'svg' | 'png' cả hai
svg string svg
blob Blob cả hai
dataUrl string cả hai
width, height number cả hai
document Envelope cả hai

Ngoại lệ ném từ onExport được bắt và ghi ra console.

Nội dung chuỗi SVG#

SVG tĩnh: thẻ hình học, <text> và thuộc tính trình bày. Không có <script>, <foreignObject>, thuộc tính on*, hay tham chiếu tài nguyên ngoài. Nhãn điểm và nhãn chữ là văn bản người dùng nhập, được thoát ký tự khi kết xuất.

Lưu trong trình duyệt#

Với storageKey, bảng vẽ tự ghi vào localStorage sau mỗi thay đổi, trễ 400 ms. Mặc định tắt. board.clearStorage() xoá bản ghi đó.