【问题标题】:Parts of image missing when using ScaleTransform with LayoutTransformer and Scrollviewer on Windows Phone 7在 Windows Phone 7 上将 ScaleTransform 与 LayoutTransformer 和 Scrollviewer 一起使用时,部分图像丢失
【发布时间】:2011-01-03 15:46:52
【问题描述】:

我正在尝试在我的 Windows Phone 7 应用程序的 ScrollViewer 中使用缩放图像。在应用程序页面上,我定义了这样的控件:

        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Name="ImageScroller" HorizontalAlignment="Center" VerticalAlignment="Center">
            <layout:LayoutTransformer x:Name="LayoutTransformer">
                <layout:LayoutTransformer.LayoutTransform>
                    <ScaleTransform x:Name="ImageScale"/>
                </layout:LayoutTransformer.LayoutTransform>                    
                <Image x:Name="Image" Margin="4" Source="{Binding ImageSource}"  />
            </layout:LayoutTransformer>
        </ScrollViewer>

LayoutTransformer 类来自 Silverlight 扩展项目。

我有处理 ZoomIn 和 ZoomOut 事件的方法,我在那里执行以下操作:

    private void ApplicationBarIconButton_Click_1(object sender, EventArgs e)
    {
        // Zoom In 
        ImageScale.ScaleX = ImageScale.ScaleY = ImageScale.ScaleX + 0.5;
        LayoutTransformer.ApplyLayoutTransform();
        ImageScroller.InvalidateMeasure();
    }

但是,当我放大并更改图像时,ScrollView 控件在图像的底部和右侧有空白区域。几乎就像在缩放变换之前使用原始图像的大小对图像进行了缩放但裁剪一样。

任何想法我做错了什么?

我还创建了一个重现此问题的项目:http://dl.dropbox.com/u/2598447/ZoomTest.WP7.zip

【问题讨论】:

  • 什么是“Silverlight Extension”项目?
  • Silverlight Extension 是托管在 codeplex 上的开源项目。这是项目的网址:slextensions.net
  • 尝试使用来自Silverlight Toolkit (silverlight.codeplex.com) 的LayoutTransformer
  • 我正在使用 Silverlight 工具包中的这个类。我会确保我使用的是这个类的最新版本并且会测试它!

标签: silverlight windows-phone-7 scrollviewer layouttransform


【解决方案1】:

我终于从 Microsoft 的 David Anson 那里得到了一些答案,并希望能提供解决方案。这是他的评论,但您也可以在他的博客上阅读他的回答:

Your phone can turn into a robot - LayoutTransformer works great on the Windows Phone platform

感谢您的精彩演示! 这个问题原来是由于 Silverlight 在 Windows 上的限制 Phone 7 - UI 元素大于 2048x2048 被剪裁到那个大小 显示时。这是一个链接 有关的更多信息 问题:

stackoverflow.com/.../bitmapimage-size-restrictions-in-silverlight

在您的示例中,测试图像是 1201x1401,我首先注意到剪辑 在 3 个“放大”之后 - 对应 到 1.9 倍的缩放系数 - 这 转换为有效的图像尺寸 2282x2662 - 超过 两个方向的限制。做 数学计算这个数量 超过 2048 给出 234 在 水平方向和 614 在 垂直的。现在保留这些数字 记住并一直滚动到 ScrollViewer 的右下角 您手机的 480x800 屏幕。注意 水平黑色空间的数量 大约是屏幕宽度的一半 (即~240px)和垂直黑色 空间大约是四分之三 屏幕高度(即 600 像素) - 因为 这些估计值非常吻合 加上我们刚刚计算的超额, 我相当有信心你在跑步 这个问题。

不幸的是,它是一个平台 限制(你已经 通过运行您的方案确认 在桌面 Silverlight 上成功) 因此不是我能做到的 直接在 LayoutTransformer 中修复。 幸运的是,有一些 中讨论的解决方法 上面的线程/链接。

很抱歉给您带来麻烦 - 我希望这个 有帮助!

答案中还引用了一篇stackoverflow文章,将这个问题的根本原因描述为Windows Phone 7平台限制:

BitmapImage size restrictions in Silverlight

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多