Windows Phone 7 + холст + жест + события OnDrag + ограничить панорамирование / перетаскивание - PullRequest
3 голосов
/ 09 июня 2011

У меня есть один контейнерный холст, внутри которого я загружаю холст большого размера. Я использую методы слушателя жестов. Несколько методов, таких как OnDragStarted, OnDragDelta и OnDragCompleted, я использую эти методы для панорамирования внутреннего (большего размера) холста.

Проблема в том, что я не могу ограничить панорамирование внутреннего холста, значит, я должен иметь возможность панорамировать внутренний холст в пределах границы внешнего холста.

Как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 21 июня 2011

Я думаю, что вам не хватает, чтобы определить клип вашего внешнего холста.Причина, по которой вам нужно это сделать, заключается в том, что Canvas по умолчанию не имеет переполнения: скрыто.Любой дочерний элемент внутри него, который на самом деле больше, будет показан за его пределами.

Вам необходимо установить клип для внешнего холста следующим образом:

<Canvas Width="200" Height="100">       
    <Canvas.Clip>
        <RectangleGeometry Rect="0, 0, 200, 100"/>
    </Canvas.Clip>
</Canvas>
0 голосов
/ 21 июня 2011

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

Эта функциональность очень похожа на эффект перетаскиваемой карты. Если да, можете ли вы адаптировать элемент управления карты с помощью специального изображения для панорамирования / масштабирования?

Чтобы ответить на ваш конкретный вопрос в том виде, в каком я его понимаю, вам нужно определить текущую позицию внутреннего холста при обработке события GestureListener или GestureReceiver.

Затем либо остановите движение, когда достигнете своей точки x, y, либо запретите выполнение события, если оно уже находится в этой позиции.

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