0

有没有办法在深度缩放中对多尺度图像执行固定缩放?即单击一次将X,Y点缩放到2倍,再次单击恢复到原始位置和缩放级别?

我已经编写了放大和缩小的代码,但是在缩放过程中调用 zoomaboutlogicalpoint 会导致缩小太远(我猜是由于鼠标向上事件中的 1/2 因素 - 我可以获得缩放级别吗?)。另外我希望缩小的图像位于中心(我想我将点更改为缩放到图像的中间位置,但这似乎不起作用,也许我需要考虑 ViewPort 位置?)

例如

private void msi_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
Point p = e.GetPosition(msi); 缩放(2,p);}

private void msi_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
Point p = e.GetPosition(msi); 缩放(1/2,p);}

    public void Zoom(double zoom, Point pointToZoom)
    {
        bool zoomingIn = zoom > 1;
        bool zoomingOut = zoom < 1;
        double minViewportWidth = 0.05;
        double maxViewportWidth = 1;

        if (msi.ViewportWidth < minViewportWidth && zoomingIn)
        {
            return;
        }

        if (msi.ViewportWidth > maxViewportWidth && zoomingOut)
        {
            return;
        }

        Point logicalPoint = this.msi.ElementToLogicalPoint(pointToZoom);
        this.msi.ZoomAboutLogicalPoint(zoom, logicalPoint.X, logicalPoint.Y);

    } 

谢谢。

4

1 回答 1

0

在缩小之前重置变换原点似乎已经成功了:

msi.RenderTransformOrigin = new Point(msi.Height / 2, msi.Width / 2);

于 2010-02-19T09:49:13.180 回答