0

私は Visual C# 2010 Express で WPF を使用して Microsoft Surface テーブル用のアプリケーションを開発していますが、この問題に対する簡単な解決策を見つけることができません。

ScatterView 項目のカスタム テンプレートを設定せずに ScatterView コントロールを使用すると、コントロールは新しい ScatterViewItems をランダムな方向と位置で画面にスローします。これ、いいね。

私は垂直画面でプログラムを開発しています。この画面では、scatterViewItems がランダムにスローされますが、それらはほとんど直立しており、逆さまにスローされることはありません。私が得ているのは、コントロールが画面が垂直であることを認識し、アイテムが上下逆さまにならないようにすることです。

ただし、プログラムを横画面のデバイスに転送すると、アイテムがランダムに投げ出され、元のアプリの向きから上下逆になることがよくあります。ここでも、ScatterView コントロールは InteractiveSurface.PrimarySurfaceDevice.Tilt (またはそれに類するもの) を読み取り、補正しています。

これをやめさせるにはどうすればよいですか?

画面が垂直であるかのように、アイテムが ScatterView に引き続き表示されるようにしたいだけです。ScatterView をだましてまだ垂直であると思わせることはできますか? この機能をオフにすることはできますか? ScatterViewItems の独自のテンプレートを作成することは避けたいと思います。

ありがとう!

4

2 に答える 2

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 に答える
0

各項目の Orientation プロパティを 0 に設定します。ランダム性は、値を明示的に設定していない場合にのみ発生します

于 2012-07-07T13:38:39.017 に答える