Я использовал настроенный PannableCanvas, который был представлен здесь , и я столкнулся с небольшой проблемой. Мое программное обеспечение почти закончено, и последнее, что мне нужно сделать, это добавить поддержку для появления узлов в центре экрана. Итак, что я сделал изначально:
nodeTranslateX/Y = -pannableCanvas.getTranslateX/Y
И это работало до тех пор, пока я не понял, что если вы увеличиваете / уменьшаете масштаб (где масштаб больше не равен 1,0), он полностью портит его, и узел начинает помещаться в странные места. Тогда я попробовал:
nodeTranslateX/Y = -pannableCanvas.getTranslateX/Y * pannableCanvas.getScale()
И это тоже не сработало! Его еще больше выбрасывают из строя.
Я пробовал многочисленные комбинации преобразований, таких как деление шкалы, инвертирование шкалы, используя screenToLocal (), вы называете это. Никто из них не работал. Проблема в том, что когда вы уменьшаете масштаб, translateX / Y холста корректируется с учетом масштаба, но это дает вам такие вещи, как 1500, когда узлы должны появляться с нормальными координатами, такими как 300.
Есть ли способ получить координаты верхнего левого угла экрана относительно холста? Я совершенно не знаю, как это исправить. Опять же, мне просто нужно иметь возможность порождать узел в центре экрана. Что мне делать?
Спасибо, что уделили время!