locked
WP8多点触控浏览图片,如何控制拖动的时候不拖出屏幕 ? RRS feed

  • 问题

  • 如题!现在主要的问题的,拖动图片会拖出屏幕,现制作了一个demo,demo详见onedrive地址:  https://onedrive.live.com/redir?resid=56C8C9A332A136A7!287&authkey=!AL5pu2Nvxx66dGc&ithint=file%2c.rar。  希望能有一个控制图片不出屏幕的例子,实在是没办法解决这个问题了。试过了System.Windows.Application.Current.Host.Content来获取屏幕可显示区域,但还是没能实现完全控制,这一部分代码如下,

    private void GestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
            {
                double dtransformX = (double)CurrentImage.RenderTransform.GetValue(CompositeTransform.TranslateXProperty);
                double dtransformY = (double)CurrentImage.RenderTransform.GetValue(CompositeTransform.TranslateYProperty);

     double dWidth = System.Windows.Application.Current.Host.Content.ActualWidth;
                double dHeight = System.Windows.Application.Current.Host.Content.ActualHeight;
                double dPositionX = e.GetPosition(CurrentImage).X; //CurrentImage为当前界面显示图片的image对象
                double dPositionY = e.GetPosition(CurrentImage).Y;

                if (Math.Abs(dPositionX) > dWidth / 2)
                    dtransformX = 0.0;   //如果移动的距离大于屏幕的一半,就不移动

                if (Math.Abs(dPositionY) > dHeight / 2)
                    dtransformY = 0.0;

                CompositeTransform cc = new CompositeTransform();
                cc.TranslateX = dtransformX;
                cc.TranslateY = dtransformY;
                cc.SetValue(CompositeTransform.ScaleXProperty, CurrentImage.RenderTransform.GetValue(CompositeTransform.ScaleXProperty));
                cc.SetValue(CompositeTransform.ScaleYProperty, CurrentImage.RenderTransform.GetValue(CompositeTransform.ScaleYProperty));
                cc.SetValue(CompositeTransform.CenterXProperty, CurrentImage.RenderTransform.GetValue(CompositeTransform.CenterXProperty));
                cc.SetValue(CompositeTransform.CenterYProperty, CurrentImage.RenderTransform.GetValue(CompositeTransform.CenterYProperty));
               
                CurrentImage.SetValue(RenderTransformProperty, cc);

    2014年6月3日 3:00

全部回复

  • 不确定是否支持。如果不拉出屏幕。有些很大的图片看不清晰呀。
    2014年6月5日 5:44
  • 谢谢!James-Carter !   我明白你的意思,放大后是允许拖拉来看清图片的。而目前我的问题是,我可以给客户进行拖拉,但会出现一拖,比如向上拖,会把这个图片全部拖出屏幕了,显示区域就剩下一片黑,而这时你根本没办法把图片拉回来(就算能拉回来,这种全部托出的效果也是不合理)。所以我需要你个方法,就是能帮我控制住图片不完全出屏幕,至少保证拖到一定程度就不在出去,这样有一部分在显示区域内,就可以继续操作图片,可以拉回来。如我有什么表述不清楚可以追问下。

    2014年6月6日 9:14