События мыши WPF Multitouch DeltaManipulation Эквивалентны? - PullRequest
3 голосов
/ 18 декабря 2010

У меня есть небольшое демонстрационное приложение с сеткой.эта сетка содержит изображение.Я использую следующий код для масштабирования и перевода изображения с помощью касания.

        private void manipulationDelta(object sender, ManipulationDeltaEventArgs e)
    {

        Matrix matrix = imagematrix.Matrix;

        matrix.Translate(e.DeltaManipulation.Translation.X, e.DeltaManipulation.Translation.Y);
        matrix.ScaleAt(e.DeltaManipulation.Scale.X, e.DeltaManipulation.Scale.Y,
            e.ManipulationOrigin.X, e.ManipulationOrigin.Y);

        imagematrix.Matrix = matrix;

        e.Handled = true;

    }

Матрица помещена в свойство rendertransformation на изображении.

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

Я пробовал что-то подобное для перевода при перемещении мыши, но это не то же самое: (

        protected override void OnMouseMove(MouseEventArgs e)
    {

        if (e.LeftButton == MouseButtonState.Pressed)
        {


            Vector delta = lastPoint - e.GetPosition(canvascontrol);

            Matrix matrix = PART_MATRIX.Matrix;

            if(delta.X > 0)
                matrix.OffsetX += 1;
            else
                matrix.OffsetX -= 1;

            if (delta.Y > 0)
                matrix.OffsetY += 1;
            else
                matrix.OffsetY -= 1;

            imagematrix.Matrix = matrix;

        }

        base.OnMouseMove(e);

    }

lastPoint - это первая точка на mouseleftbuttondown.

Спасибо.

1 Ответ

0 голосов
/ 04 января 2012

Я не уверен, если это ответ, который вы ищете, но элемент управления Thumb дает вам DragDelta, если вы оборачиваете Thumb в шаблон и затем назначаете шаблон для объекта изображения, или назначить изображение в качестве шаблона для Thumb.

...