Як намаляваць просты 2D сеткі (не інтэрактыўны) у PaperJS?

У мяне ёсць інтэрактыўнае дадатак макет зрабіў з PaperJS , але ён па-ранейшаму не хапае невялікую асаблівасць. Мне трэба намаляваць 2D сетку (вы ведаеце ... што раўнамерную сетку ліній, якія паўтараюцца бясконца над паверхняй), ён будзе выкарыстоўвацца ў якасці кіраўніцтва для ўзаемадзеяння з карыстальнікам пры перамяшчэнні рэчаў па ўсім экране (але сама сетка можа быць цалкам статычнай ).

Я проста не ведаю, як рэалізаваць гэта ў PaperJS. Гэта не можа быць проста фонавы малюнак, так як ён будзе прадстаўлены ў розных маштабах, і я хацеў, каб быць аказаны вельмі хутка, бо яна заўсёды будзе бачная.

Тып сеткі Я хацеў бы звярнуць гэта сетка ў цэнтры сеткі 2D, як у прыкладзе (а) малюнка:

2D basic grid types

Любое прасвятленне вітаецца.

2
Я мог бы вырашыць гэтую праблему, проста выкарыстоўваючы іншы палатно і размясціўшы яго пад PaperJS адзін (Z-індэкс робіць трук). Рэндэру сеткі там, як выказаў здагадку Джэймс.
дададзена аўтар Juho Vepsäläinen, крыніца
Гэта здаецца дзіўным пытаннем, так як Paper.js здаецца, бібліятэка для малявання вектарнай графікі, і вы пытаеце, як намаляваць канкрэтны малюнак. Спрабавалі Ці вы зрабіць шлях з MoveTo, LineTo, MoveTo, LineTo, ...?
дададзена аўтар James Clark, крыніца

1 адказы

Калі ўсё, што вы хочаце, гэта лінія:

var drawGridLines = function(num_rectangles_wide, num_rectangles_tall, boundingRect) {
    var width_per_rectangle = boundingRect.width/num_rectangles_wide;
    var height_per_rectangle = boundingRect.height/num_rectangles_tall;
    for (var i = 0; i <= num_rectangles_wide; i++) {
        var xPos = boundingRect.left + i * width_per_rectangle;
        var topPoint = new paper.Point(xPos, boundingRect.top);
        var bottomPoint = new paper.Point(xPos, boundingRect.bottom);
        var aLine = new paper.Path.Line(topPoint, bottomPoint);
        aLine.strokeColor = 'black';
    }
    for (var i = 0; i <= num_rectangles_tall; i++) {
        var yPos = boundingRect.top + i * height_per_rectangle;
        var leftPoint = new paper.Point(boundingRect.left, yPos);
        var rightPoint = new paper.Point(boundingRect.right, yPos);
        var aLine = new paper.Path.Line(leftPoint, rightPoint);
        aLine.strokeColor = 'black';
    }
}

drawGridLines(4, 4, paper.view.bounds);

Калі вы хочаце, каб кожны прастакутнік павінны быць асобным шляхам да трасіроўкі для асобных прастакутнікаў:

var drawGridRects = function(num_rectangles_wide, num_rectangles_tall, boundingRect) {
    var width_per_rectangle = boundingRect.width/num_rectangles_wide;
    var height_per_rectangle = boundingRect.height/num_rectangles_tall;
    for (var i = 0; i < num_rectangles_wide; i++) {
        for (var j = 0; j < num_rectangles_tall; j++) {
            var aRect = new paper.Path.Rectangle(boundingRect.left + i * width_per_rectangle, boundingRect.top + j * height_per_rectangle, width_per_rectangle, height_per_rectangle);
            aRect.strokeColor = 'white';
            aRect.fillColor = 'black';
        }
    }
}

drawGridRects(4, 4, paper.view.bounds);
3
дададзена