読者です 読者をやめる 読者になる 読者になる

ikarosの作業場

C#でWindows Store Appsやったり、Phunいじったり

UIElementsをタッチ操作をする(Windows UI/Windows Store Apps向け)

今日は物理シミュに関連すること。いろいろ忙しいので手短に行きます。ご了承ください
物理シミュなんで物体を生成したのち動かしたりする動作が必要となります
Tappedイベントなどを用いて一つ一つ動きを定義することもできますが、今回はWindowsに標準搭載されている
Manipulation系の機能を使いたいと思います

今日は動きだけ実装してみましょう

        private TranslateTransform _translation;
        public MainPage()
        {
            this.InitializeComponent();
            this._translation = new TranslateTransform();

            //動かすUIElement
            TextBlock test = new TextBlock();
            test.Text = "test";
            test.Margin = new Thickness(200, 200, 0, 0);


            test.RenderTransform = this._translation;
            test.ManipulationMode = ManipulationModes.All;
            //イベントを追加
            test.ManipulationDelta += test_ManipulationDelta;
            MainGrid.Children.Add(test);
        }

        private void test_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
        {
            this._translation.X = e.Delta.Translation.X;
            this._translation.Y = e.Delta.Translation.Y;
        }

ManipulationDeltaはクリックしたりタッチしたりして動かす時に動作するイベントです。
今回は物体の動きを制御するRenderTransformのX,Yをそのイベント内で動かすことで慣性が載った直観的な・スムーズな動きが可能になります。
また複数のUIElementsを動かす時はその数に応じたTranslateTransform変数が必要となります。

当サイトのソースコード及びその他の情報は個人・商用問わず自由に使っていただいてかかまいませんが、当サイトの情報が元で発生したいかなる結果・不利益については責任を負いかねますのでご了承ください