使用带有Angular 4的面料js
发布时间:2020-12-17 17:03:26 所属栏目:安全 来源:网络整理
导读:我是新的Angular和Fabric js所以任何指针都非常赞赏.我正在尝试构建一个用户界面,用户可以将对象拖放到画布上,然后用线条连接它们. 从本质上讲,我希望从第一个链接获得Angular4拖放示例,以便在第二个链接中找到farbricjs画布. Drag and Drop Canvas Example
我是新的Angular和Fabric js所以任何指针都非常赞赏.我正在尝试构建一个用户界面,用户可以将对象拖放到画布上,然后用线条连接它们.
从本质上讲,我希望从第一个链接获得Angular4拖放示例,以便在第二个链接中找到farbricjs画布. > Drag and Drop 拖放示例有效,但fabricjs画布在Chrome中呈现为方框,仅此而已.任何想法都非常感激. 我采取的步骤: 在tsconfig.json中我设置了“allowJs”:true 我的dnd.component.html看起来像: <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script> <script type="text/javascript" src="canvas.js"></script> <style> canvas { border: 1px solid #ccc; } </style> <div class="container"> <div> <simple-dnd></simple-dnd> <canvas id="c" width="600" height="600"></canvas> </div> </div> 而canvas.js看起来像这样: setTimeout(function() { $(document).ready(function () { var canvas = new fabric.Canvas('c',{selection: false}); var grid = 50; // create grid for (var i = 0; i < (600 / grid); i++) { canvas.add(new fabric.Line([i * grid,i * grid,600],{stroke: '#ccc',selectable: false})); canvas.add(new fabric.Line([0,600,i * grid],selectable: false})) } // add objects var rect = new fabric.Rect({ left: 100,top: 100,width: 247,height: 309,fill: '#9f9',originX: 'left',originY: 'top',centeredRotation: true }); canvas.add(rect); var rect2 = new fabric.Rect({ left: 100,width: 223,height: 167,fill: '#faa',centeredRotation: true }); canvas.add(rect2); var rect3 = new fabric.Rect({ left: 196,top: 334,width: 150,height: 75,fill: 'blue',centeredRotation: true }); canvas.add(rect3); canvas.renderAll(); }); },0); 解决方法
我做了类似的事情.不完全使用您提供的链接.我使用fabric js以及canvas和angular4来将png文件拖放到画布上.零件:
import { Component,OnInit} from '@angular/core'; import 'fabric'; declare const fabric: any; @Component({ selector: 'app-image-preview',templateUrl: './image-preview.component.html',styleUrls: ['./image-preview.component.styl'] }) export class ImagePreviewComponent implements OnInit { image: any; file:File = null; canvas:any; constructor() { } ngOnInit() { //this.context = this.canvasRef.nativeElement.getContext('2d'); this.canvas = new fabric.Canvas('canvas',{ selection: false }); } handleDrop(e) { this.file = e.dataTransfer.files[0]; const reader = new FileReader(); reader.onload = (imgFile) => { console.log(imgFile) const data = imgFile.target["result"]; fabric.Image.fromURL(data,(img) => { let oImg = img.set({ left: 0,top: 0,angle: 0 }).scale(1); this.canvas.add(oImg).renderAll(); var a = this.canvas.setActiveObject(oImg); var dataURL = this.canvas.toDataURL({format: 'png',quality: 0.8}); }); }; reader.readAsDataURL(this.file); return false; } HTML模板: <div (dragover)="false" (dragend)="false" (drop)="handleDrop($event)"> <canvas id="canvas" class="canvas" width="500" height="500"> </canvas> </div> 如果您没有发现这有用,请告诉我,我可以删除答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |