我想在缩放时“粘贴”椭圆形图像

时间:2016-11-07 14:54:30

标签: c# uwp

当我缩放图像时,我需要将简单的椭圆“粘贴”到图像上的点击/点击位置。我怎样才能做到这一点?我尝试通过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>

0 个答案:

没有答案