У меня есть небольшое демонстрационное приложение с сеткой.эта сетка содержит изображение.Я использую следующий код для масштабирования и перевода изображения с помощью касания.
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.
Спасибо.