ScatterView项目方向和PrimarySurfaceDevice.Tilt

时间:2012-07-06 22:42:18

标签: c# wpf pixelsense scatterview

我正在使用WPF的Visual C#2010 Express开发一个Microsoft Surface表的应用程序,并且在我的生活中找不到解决这个问题的简单方法。

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

我正在垂直屏幕上开发我的程序,在其上随机抛出scatterViewItems,除了它们大部分是直立的,并且从不在上行下降。我得到的是控件知道屏幕是垂直的,并防止物品颠倒开始。

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

如何让它停止这样做?

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

谢谢!

2 个答案:

答案 0 :(得分:0)

为每个项目将Orientation属性设置为0。只有在未明确设置值

时才会发生随机性

答案 1 :(得分: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 ......