2013-03-09 3 views
0

В настоящее время я работаю над проектом, основанным на Kinect, и я не могу найти способ изменения размера изображения относительно центра изображения. Мне удалось обновить ширину и высоту изображения, когда я двигаю руками, и я получаю снимок, но относительно угла TopLeft. Итак, в принципе, если вы представляете прямоугольник, верхний левый угол всегда фиксируется, а другие углы перемещаются. Изображение изменяется только в направлениях справа налево и снизу вверх.Изменение размера изображения относительно центра изображения

Сначала я попытался использовать ScaleTransform для изменения размера изображения, и там я мог указать начало преобразования (которое я устанавливал в середине изображения), но он не позволяет обновить размер изображения в результате. поэтому он мне не нужен ..

Итак, если кто-нибудь может дать мне какое-то представление о том, как динамично подходить к задаче изменения размеров во всех направлениях, я был бы очень благодарен. Может быть, есть какой-то способ установить точку на другое значение, чем верхнее левое?

Заранее благодарен!

+0

Вы должны сначала перевести изображение в начало координат, применить масштабирование, а затем перевести его обратно в исходный центр. См. Функцию scaleImage() в [этом ответе] (http://stackoverflow.com/questions/9792835/image-manipulation-wont-display-transformed-image). – beaker

+0

Спасибо за идею! Я также просто подумал, что могу обновить поля, чтобы сдвинуть изображение в направлениях, которые мне нужны во время масштабирования, создавая впечатление, что масштабирование происходит из центра. – user2151660

+0

Если у вас есть способ переместить начало координат в центр вашего изображения, это сработает. В противном случае, перевод на начало и обратно не требует слишком больших накладных расходов с точки зрения кодирования или вычисления (матрицы преобразования умножаются вместе, прежде чем применять их к точкам на вашем изображении). – beaker

ответ

0

Вы можете использовать RenderTransformOrigin для перемещения центральной точки действия масштаба. Например:

<Setter Property="RenderTransformOrigin" Value="0.5, 0.5" /> 

У меня был подобный вопрос, связанный с изменения размера на СП от центра UserControl. Обнаружение того, как изменить размер от центра объекта, упоминается в одном из комментариев принятого ответа.

Growing UserControl Size with Style Trigger?

+0

Я думаю, что я видел это раньше, но проблема с ScaleTransform заключается в том, что он не обновляет масштабированную ширину и высоту изображения. – user2151660

+0

Возможно, я недопонимаю о необходимости. Если вы хотите сделать снимок и сжать или увеличить его, «ScaleTransform» должен это сделать, а «RenderTransformOrigin» позволит вам перенести начало этого масштаба. –

Смежные вопросы