Используйте движение мыши для изменения уровня / окна в AMI Medical Imaging (AMI) JS ToolKit
Я немного играю с AMI Medical Imaging (AMI) JS ToolKit. Есть ли способ переместить окно на событие мыши, например, щелкнуть правой кнопкой мыши и переместить?
Я знаю, что можно изменить окно / уровень с помощью меню на примерах, но я хотел бы изменить контроллер, чтобы он перемещал мышь.
Спасибо!
1 ответ
Решение
Для управления окном / уровнем, перемещая мышь, вы должны будете слушать mousemouve
событие затем обновить stackHelper -> slice -> windowWidth/Center
как хотите.
Вы можете включить окно / уровень, если пользователь нажмет shift
:
var drag = {
x: null,
y: null
}
var shiftDown = false;
function onKeyPressed(event){
shiftDown = event.shiftKey;
if(!shiftDown){
drag.x = null;
drag.y = null;
}
}
container.addEventListener('keydown', onKeyPressed);
container.addEventListener('keyup', onKeyPressed);
Затем обновите окно / уровень при перемещении мыши:
function onMouseMove(event){
if(!shiftDown || !stack || !stackHelper){
return;
}
if(drag.x === null){
drag.x = event.offsetX;
drag.y = event.offsetY;
}
var threshold = 15;
var dynamicRange = stack.minMax[1] - stack.minMax[0];
dynamicRange /= container.clientWidth;
if(Math.abs(event.offsetX - drag.x) > threshold){
// window width
stackHelper.slice.windowWidth += dynamicRange * (event.offsetX - drag.x);
drag.x = event.offsetX;
}
if(Math.abs(event.offsetY - drag.y) > threshold){
// window center
stackHelper.slice.windowCenter -= dynamicRange * (event.offsetY - drag.y);
drag.y = event.offsetY;
}
}
container.addEventListener('mousemove', onMouseMove);
Смотрите демонстрацию в режиме реального времени (сдвиг + перемещение мыши для управления уровнем окна): http://jsfiddle.net/vabL3qo0/41/