Перемещение изображения внутри изображения с помощью мыши

Я хочу иметь возможность перетаскивать увеличенное на 100% изображение в окне изображения: http://spunit.tk/x/dragpic1.png.

Я хочу, чтобы он работал точно так же, как средство просмотра фотографий Windows: http://spunit.tk/x/dragpic2.png .

Как это возможно?


person spunit    schedule 05.08.2013    source источник
comment
Не используйте свойство Image, вместо этого вам придется использовать событие Paint. Требуется изрядный кусок кода.   -  person Hans Passant    schedule 05.08.2013
comment
это winforms или wpf?   -  person Avram Tudor    schedule 05.08.2013


Ответы (1)


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

Затем вам понадобятся три события мыши: мышь вниз, мышь вверх и движение мыши, где вы можете получить координаты мыши и захватить или отпустить мышь, чтобы перевести поле изображения в соответствии с дельта-переводом мыши.

person AgentFire    schedule 05.08.2013
comment
Что вы подразумеваете под координатами этого изображения? Его верхняя и левая стороны, а также размер должны быть одинаковыми. И теперь при таком масштабировании для его SizeMode установлено значение Zoom, которое, кажется, работает правильно. А вот насчет событий, мне кажется, так было бы правильно. Я возился с этим, но не могу понять, как это сделать на самом деле... - person spunit; 05.08.2013
comment
Я имею в виду, что вы должны изменить верхнюю и левую части изображения, чтобы имитировать движение изображения. - person AgentFire; 05.08.2013
comment
О... Итак, когда изображение сдвинуто на 1 пиксель вниз, Верх = -1 и Высота = 1 пиксель. Вы имеете в виду, как это? - person spunit; 05.08.2013
comment
Когда изображение нужно переместить вниз от [0; 0] до [0; 1], свойство Left окна изображения остается 0, а его свойство Top становится 1. - person AgentFire; 05.08.2013
comment
Хм, я попробую это. Спасибо. - person spunit; 05.08.2013