Линии галстука, проходящие через "клетки" на холсте - PullRequest
0 голосов
/ 05 июня 2018

Мне нужно выяснить, как рисовать вертикальные и горизонтальные линии, проходящие в центре ячейки.

Кстати, у меня есть двумерная сетка с ячейками 100x100. Как я могу рисовать линии, проходящие внутри этих ячеек, разделяющих каждую ячейку на 4 части?

Я использую сильфон для рисования:

//Draw grid lines horizontally and vertically
    for (int i = 0; i < gameBoard.length; i++) {
        if((i * cellWidth) + xOffset > 0 && (i * cellWidth) + xOffset < width) {
            canvas.drawLine((i * cellWidth) + xOffset, 0, (i * cellWidth) + xOffset, height, blackPaint);
        }
    }

    for (int i = 0; i < gameBoard[0].length; i++) {
        if((i * cellHeight) + yOffset > 0 && (i * cellHeight) + yOffset < height) {
            canvas.drawLine(0, (i * cellHeight) + yOffset, width, (i * cellHeight) + yOffset, blackPaint);
        }
    }

Это рисует что-то похожее на это (каждая ячейка имеет GestureDetector)

enter image description here

Не удается найти способ нарисовать другихлинии, проходящие это время внутри каждой ячейки, так что она делит ее на четыре части.

Примерно так (красные - это ячейки):

enter image description here

1 Ответ

0 голосов
/ 05 июня 2018
//Draw grid lines horizontally and vertically
for (int i = 0; i < gameBoard.length; i++) {
    if((i * cellWidth) + xOffset > 0 && (i * cellWidth) + xOffset < width) {
        canvas.drawLine((i * cellWidth) + xOffset, 0, (i * cellWidth) + xOffset, height, blackPaint);
    }
}

for (int i = 0; i < gameBoard[0].length; i++) {
    if((i * cellHeight) + yOffset > 0 && (i * cellHeight) + yOffset < height) {
        canvas.drawLine(0, (i * cellHeight) + yOffset, width, (i * cellHeight) + yOffset, blackPaint);
    }
}

xOffset += cellWidth * 0.5f;
yOffset += cellHeight * 0.5f;

//Draw grid lines horizontally and vertically AGAIN.. but now with offsets moved half size to the right/bottom
for (int i = 0; i < gameBoard.length; i++) {
    if((i * cellWidth) + xOffset > 0 && (i * cellWidth) + xOffset < width) {
        canvas.drawLine((i * cellWidth) + xOffset, 0, (i * cellWidth) + xOffset, height, blackPaint);
    }
}

for (int i = 0; i < gameBoard[0].length; i++) {
    if((i * cellHeight) + yOffset > 0 && (i * cellHeight) + yOffset < height) {
        canvas.drawLine(0, (i * cellHeight) + yOffset, width, (i * cellHeight) + yOffset, blackPaint);
    }
}

В качестве примечания я хотел бы рассмотреть использование функций вместо повторения кода!Удачи;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...