| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | canvasWidth:window.innerWidth > 450 ? 400 : window.innerWidth - 30, |
| | | canvasWidth: window.innerWidth > 450 ? 400 : window.innerWidth - 30, |
| | | backgroundImgUrl: "", // 背景 |
| | | isDraw: true, // 绘画、框选模式 |
| | | brush: "Pencil", // 画笔类型 |
| | |
| | | ); |
| | | // 设置背景 |
| | | this.setBackgroundImage(); |
| | | // |
| | | fabric.Object.prototype.transparentCorners = false; |
| | | this.setBrush(); |
| | | }, |
| | |
| | | // 画笔样式 |
| | | this.vLinePatternBrush = new fabric.PatternBrush(this.canvas); |
| | | this.vLinePatternBrush.getPatternSrc = () => { |
| | | let patternCanvas = |
| | | fabric[this.container ? this.container : document].createElement( |
| | | "canvas" |
| | | ); |
| | | let patternCanvas = document.createElement("canvas"); |
| | | patternCanvas.width = patternCanvas.height = 10; |
| | | let ctx = patternCanvas.getContext("2d"); |
| | | ctx.strokeStyle = this.lineColor; |
| | |
| | | }; |
| | | this.hLinePatternBrush = new fabric.PatternBrush(this.canvas); |
| | | this.hLinePatternBrush.getPatternSrc = function () { |
| | | let patternCanvas = |
| | | fabric[this.container ? this.container : document].createElement( |
| | | "canvas" |
| | | ); |
| | | let patternCanvas = document.createElement("canvas"); |
| | | patternCanvas.width = patternCanvas.height = 10; |
| | | let ctx = patternCanvas.getContext("2d"); |
| | | ctx.strokeStyle = this.lineColor; |
| | |
| | | this.squarePatternBrush.getPatternSrc = function () { |
| | | const squareWidth = 10; |
| | | const squareDistance = 2; |
| | | const patternCanvas = |
| | | fabric[this.container ? this.container : document].createElement( |
| | | "canvas" |
| | | ); |
| | | const patternCanvas = document.createElement("canvas"); |
| | | patternCanvas.width = patternCanvas.height = |
| | | squareWidth + squareDistance; |
| | | const ctx = patternCanvas.getContext("2d"); |
| | |
| | | this.diamondPatternBrush.getPatternSrc = function () { |
| | | const squareWidth = 10; |
| | | const squareDistance = 5; |
| | | const patternCanvas = |
| | | fabric[this.container ? this.container : document].createElement( |
| | | "canvas" |
| | | ); |
| | | const patternCanvas = document.createElement("canvas"); |
| | | const rect = new fabric.Rect({ |
| | | width: squareWidth, |
| | | height: squareWidth, |
| | |
| | | const oldData = localStorage.getItem( |
| | | this.config.activeBook.name + "-paint-" + this.page |
| | | ); |
| | | this.oldImg = oldData; |
| | | this.backgroundImgUrl = oldData || this.imgUrl; |
| | | fabric.Image.fromURL( |
| | | this.backgroundImgUrl, |
| | |
| | | |
| | | <style lang="less" scoped> |
| | | .paint { |
| | | position: relative; |
| | | margin-top: 20px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | } |
| | | .bcImg { |
| | | position: absolute; |
| | | } |
| | | #canvas { |
| | | border: 1px solid #ccc; |
| | | } |