当我缩放图像时,我需要将简单的椭圆“粘贴”到图像上的点击/点击位置。我怎样才能做到这一点?我尝试通过CompositeTransform然后通过ScrollViewer.ZoomFactor计算,但没有运气。
有人知道怎么做吗?
private void imagePDF_PointerWheelChanged(object sender, PointerRoutedEventArgs e)
{
deltaScroll = -1 * e.GetCurrentPoint(imagePDF).Properties.MouseWheelDelta;
pointerX = e.GetCurrentPoint(imagePDF).Position.X;
pointerY = e.GetCurrentPoint(imagePDF).Position.Y;
deltaScroll = (deltaScroll > 0) ? 1.2 : 0.8; //pokud je > 0 má hodnotu 1.2 jinak 0.8
newScaleX = this.image_Transform.ScaleX * deltaScroll;
newScaleY = this.image_Transform.ScaleY * deltaScroll;
zoomTranslateX = (deltaScroll > 1) ? (this.image_Transform.TranslateX - (pointerX * 0.2 * this.image_Transform.ScaleX)) : (this.image_Transform.TranslateX - (pointerX * -0.2 * this.image_Transform.ScaleX));
zoomTranslateY = (deltaScroll > 1) ? (this.image_Transform.TranslateY - (pointerY * 0.2 * this.image_Transform.ScaleY)) : (this.image_Transform.TranslateY - (pointerY * -0.2 * this.image_Transform.ScaleY));
if (newScaleX == 1 | newScaleY == 1) { zoomTranslateX = 0; zoomTranslateY = 0; }
this.image_Transform.ScaleX = newScaleX;
this.image_Transform.ScaleY = newScaleY;
this.image_Transform.TranslateX = zoomTranslateX;
this.image_Transform.TranslateY = zoomTranslateY;
poiManager.ZoomUpdate(imagePDF, zoomTranslateX, zoomTranslateY);
DisplayValues();
}
public void ZoomUpdate(Image image, double translateX, double translateY)
{
shape.x = image.ActualWidth + translateX;
shape.y = image.ActualHeight + translateY;
label.x = image.ActualWidth + translateX;
label.y = image.ActualHeight + translateY;
if (OutOfBorders(image))
{
shape.SetVisibility(false);
label.SetVisibility(false);
}
else
{
shape.SetVisibility(true);
label.SetVisibility(true);
}
shape.Update();
label.Update();
}
<Canvas x:Name="canvasPDF">
<ScrollViewer x:Name="viewerPDF"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<Image x:Name="imagePDF"
ManipulationMode = "TranslateX, TranslateY, Scale"
ManipulationDelta = "imagePDF_ManipulationDelta"
PointerMoved="imagePDF_PointerMoved"
Tapped="imagePDF_Tapped"
PointerWheelChanged="imagePDF_PointerWheelChanged">
<Image.RenderTransform>
<CompositeTransform x:Name = "image_Transform"/>
</Image.RenderTransform>
</Image>
</ScrollViewer>
</Canvas>
</SplitView.Content>