图像/照片库就像内置WP7一样

时间:2011-06-24 22:20:39

标签: windows-phone-7

我正在寻找适用于Windows Phone 7的照片库。看起来与内置照片查看器相同的内容(使用轻弹操作幻灯片照片,使用捏合调整,拖动)。当您轻弹图像时,您可以看到它滑动到下一个图像...并将列表捕捉到该图像。

我已经为图像构建了调整大小和拖动功能。我无法弄清楚如何创建实际的照片滑块。

有人能指出我正确的方向吗?

我尝试过的事情:

  • Pivot Viewer(不起作用,因为它干扰图像的拖动功能,无法禁用枢轴查看器触摸)

  • 普通列表框(找不到如何捕捉到当前图像)

提前致谢

2 个答案:

答案 0 :(得分:5)

实际上我已经在我的某个应用程序中实现了你所说的内容,

您需要使用Silverlight Control TOolkit的手势监听器来捕捉拖动和捏合。

为您的图像定义一个CompositeTransformation并设置它的比例(捏合)和偏移(拖动)。

显然,当图像没有变焦时,拖动可以触发转到下一张图像。

为了让它感觉更流畅,您可能需要在页面资源上定义故事板以供使用(而不仅仅是设置偏移)

我希望它可以帮助/


为滑块效果拖动处理程序伪代码:

<Canvas>
    <Image x:Name="imgImage" Source="{Binding ...}" Width="..." Height="...">
        <Image.RenderTransform>
            <CompositeTransform x:Name="imgImageTranslate" />
        </Image.RenderTransform>
    </Image>
</Canvas>

    private void GestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
    {
        if (e.Direction == System.Windows.Controls.Orientation.Horizontal)
        {
            var abs = Math.Abs(PANEL_DRAG_HORIZONTAL);
            if (abs > 75)
            {
                if (PANEL_DRAG_HORIZONTAL > 0) // MovePrevious;
                else //MoveNext();

                e.Handled = true;
            }
        }
    }


    double PANEL_DRAG_HORIZONTAL = 0;
    private void GestureListener_DragDelta(object sender, DragDeltaGestureEventArgs e)
    {
            if (e.Direction == System.Windows.Controls.Orientation.Horizontal)
            {
                PANEL_DRAG_HORIZONTAL += e.HorizontalChange;

                var baseLeft = -imgImage.Width / 2;
                if (PANEL_DRAG_HORIZONTAL > 75) imgImageTranslate.OffsetX = baseLeft + PANEL_DRAG_HORIZONTAL;
                else if (PANEL_DRAG_HORIZONTAL < -75) imgImageTranslate.OffsetX = baseLeft + PANEL_DRAG_HORIZONTAL;
                else imgImageTranslate.OffsetX = baseLeft;
            }
        }
    }

    private void GestureListener_DragStarted(object sender, DragStartedGestureEventArgs e)
    {
        PANEL_DRAG_HORIZONTAL = 0;
    }

答案 1 :(得分:0)

使用水平方向的ScrollViewer怎么样?当然,您必须手动检测用户操作并实施正确的响应(使用一些正确设置的故事板)。

更好的方法是编写自己的自定义控件来查看图像。一个好的起点是 - Silverlight中的CoverFlow control。一旦您了解了如何将图像集合绑定到自定义控件,您只需处理当前所选项目的用户手势。