C# 散点视图项目方向和主要表面设备。倾斜

C# 散点视图项目方向和主要表面设备。倾斜,c#,wpf,pixelsense,scatterview,C#,Wpf,Pixelsense,Scatterview,我正在与WPF一起使用Visual C#2010 Express为Microsoft Surface table开发一个应用程序,我一生都找不到这个问题的简单解决方案 当使用“散射视图”控件而不为“散射视图”项目设置自定义模板时,该控件会以随机方向和位置将新的“散射视图”项目投射到屏幕上。这个,我喜欢 我在一个垂直屏幕上开发我的程序,在这个屏幕上,散点视图项目是随机抛出的,除了它们大多是直立的,而且从不朝上向下抛出。我想说的是,控件知道屏幕是垂直的,可以防止项目开始时颠倒 然而,当我将程序转移到

我正在与WPF一起使用Visual C#2010 Express为Microsoft Surface table开发一个应用程序,我一生都找不到这个问题的简单解决方案

当使用“散射视图”控件而不为“散射视图”项目设置自定义模板时,该控件会以随机方向和位置将新的“散射视图”项目投射到屏幕上。这个,我喜欢

我在一个垂直屏幕上开发我的程序,在这个屏幕上,散点视图项目是随机抛出的,除了它们大多是直立的,而且从不朝上向下抛出。我想说的是,控件知道屏幕是垂直的,可以防止项目开始时颠倒

然而,当我将程序转移到带有水平屏幕的设备上时,这些项目现在被随机抛出,并且通常与原始应用程序方向相反。同样散射视图控件正在读取InteractiveSurface.PrimarySurfaceDevice.Tilt(或类似的内容)并进行补偿。

如何让它停止这样做?

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


谢谢

将每个项目的方向属性设置为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…

谢谢,但我正在尝试保持随机方向(或伪随机方向,因为它们在垂直屏幕上仍然保持垂直)。我想我可以做我自己的随机方向生成器,但肯定有更好的方法。你必须做你自己的随机…+/-15度就好了