0

我正在使用带有 WPF 的 Visual C# 2010 Express 为 Microsoft Surface 表开发应用程序,但我终生无法找到解决此问题的简单方法。

当使用 ScatterView 控件而不为 scatterview 项设置自定义模板时,该控件会以随机方向和位置将新的 ScatterViewItems 抛出到屏幕上。这个,我喜欢。

我正在垂直屏幕上开发我的程序,在该屏幕上随机抛出 scatterViewItems,除了它们大部分是直立的,并且从不倒置。我得到的是控件知道屏幕是垂直的,并防止项目开始倒置。

但是,当我将程序传输到具有水平屏幕的设备时,这些项目现在随机抛出,并且经常与原始应用程序方向颠倒。ScatterView 控件再次读取 InteractiveSurface.PrimarySurfaceDevice.Tilt(或类似的东西)并进行补偿。

我如何让它停止这样做?

我只想让我的项目继续出现在 ScatterView 中,就好像屏幕是垂直的一样。我可以欺骗 ScatterView 认为它仍然是垂直的吗?我可以关闭此功能吗?我想避免为 ScatterViewItems 制作自己的模板。

谢谢!

4

2 回答 2

0

将每个项目的方向属性设置为 0。随机性仅在您没有明确设置值时发生

于 2012-07-07T13:38:39.017 回答
0

好吧,如果没有人能解释 ScatterView 如何知道屏幕倾斜角度,以及如何改变它,那么唯一的解决方案就是生成自己的随机性。作为参考,这是我曾经这样做的:

    ScatterViewItem item = new ScatterViewItem();
    item.Content = image;
    Random rand = new Random();

    item.Orientation = RandOrientation(-20, 20);
    item.Center = RandCenter(50);
    SSScatter.Items.Add(item);

    private Point RandCenter(int pad)
    {   
        int randx = rand.Next(pad, (int)SSScatter.Width-pad);
        int randy = rand.Next(pad, (int)SSScatter.Height-pad);
        return new Point(randx, randy);
    }

    private int RandOrientation(int low, int up)
    {
        int randor = rand.Next(low, up);
        return randor;
    }

我仍然希望有办法欺骗 ScatterView ......

于 2012-07-11T21:22:20.020 回答