javascript - 将点数组从 Ink.StrokeCollection 转换为路径数组 freeDrawingBrush Fabric.js

标签 javascript c# xml fabricjs

我在一个项目中使用fabric.js,现在我正在尝试将旧的xml 数组指向fabricjs 对象。

遗留项目将 xml 持久性保存到数据库中。在 C# 中是使用 Silverlight 中的 InkPresenter 控件的 System.Windows.Ink.StrokeCollection

这是生成的xml https://cloud.githubusercontent.com/assets/20269820/18906832/153537a0-8561-11e6-91ca-6bbbec70d859.png

对于fabric.js,我尝试创建类似的原型(prototype),然后我有以下内容:

我检查fabricjs中的路径数组对象: Two objects in fabric js 有什么方法可以将该 xml 结构转换为结构路径结构吗?我可以使用 Fabric 创建一个新结构,但我仍然需要迎合遗留问题,在这种情况下,我需要找到一种将该结构转换为 Fabric 的方法。

谢谢

更多详细信息:github。 com/kangax/fabric.js/issues/3295

最佳答案

根据@AndreaBogazzi 建议创建了解决方案。

var canvas = this.__canvas = new fabric.Canvas('c', {
    isDrawingMode: true
});

if (canvas.freeDrawingBrush) {
    canvas.freeDrawingBrush.color = "#000000";
    canvas.freeDrawingBrush.width = 3;
    canvas.freeDrawingBrush.shadowBlur = 0;
}
var pencil = new fabric.PencilBrush(canvas);
var points = [{x: 11, y: 12}, {x: 11, y: 11}, {x: 12, y: 11}];
// Convert Points to SVG Path
var res = pencil.convertPointsToSVGPath(points);
// Create the Path
var path = pencil.createPath(res.toString());
// Set the tickness and color
path.set({ strokeWidth: 3, stroke: "rgba(0, 0, 0, 1)" });
// Add to the Canvas
canvas.add(path);

要将路径恢复为点数组:

var arr = [];
for (var i = 0; i < canvas.getObjects().length; i++) {
    for (var j = 0; j < canvas.getObjects()[i].path.length; j++) {
        arr.push({
            x: canvas.getObjects()[i].path[j][1],
            y: canvas.getObjects()[i].path[j][2]
        });
    }
}

关于javascript - 将点数组从 Ink.StrokeCollection 转换为路径数组 freeDrawingBrush Fabric.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39743899/

相关文章:

javascript - 基于元素选择的 jQuery 验证条件

javascript - 错误未知提供商 : $scopeProvider <- $scope when using $injector to inject $scope into controller

javascript - 如何从表中的每个新行中删除类?

ios - 在其他环境中使用 Plist

java - 在 Java DOM 中创建命名空间前缀的 XML 节点

java - 如何改进我的处理节奏游戏原型(prototype)?

c# - cloudfront 私有(private)限时 url

c# - MonoTouch.Dialog 可以与级联数据源一起使用吗?

c# - 使用 Linq 查询和过滤对象数组

xml - XSLT 将新元素添加到 XML 的根元素