2018年05月08日
《その377》画像の移動(1)
画像の移動(1)
今回は、飛行機が左から右に移動するだけですが、飛んでいるみたいに見えなくもないです。
スタートボタンを押すと、飛行機が動き出します。
この画像は画面のコピーなので、動きませんが・・・。
動いています・・・
そのまま画面の外に出てしまうので、適当なところで終了ボタンを押して終了します。
◆順序が逆になってしまいましたが、ここから下が、説明です。
飛行機の位置を Margin で指定している箇所以外は、これまでに何回か使ったことがあるものばかりです。
マージンは、
img->Margin = Windows::UI::Xaml::Thickness(120, 80, 0, 0);
のように指定します。
この場合は、左から 120、上から 80 の位置になります。
プログラムでは、
img->Margin = Windows::UI::Xaml::Thickness(C(), 80, 0, 0);
として、左からの位置を変化させることで、飛行機を動かします。
コントロールを配置します。
最初の上マージンを 80 にしました。
プログラムでも、飛行機が水平に移動するように、上マージンを 80 に保っています。
MainPage.xaml.cpp です。
//
// MainPage.xaml.cpp
// MainPage クラスの実装。
//
#include "pch.h"
#include "MainPage.xaml.h"
using namespace App1;
using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;
MainPage::MainPage()
{
InitializeComponent();
}
struct C {
C() : x(0) { }
int operator()() {
return ++x;
}
private:
int x;
};
C c;
void MainPage::StartTimer() {
auto timer = ref new Windows::UI::Xaml::DispatcherTimer();
TimeSpan span;
span.Duration = 1000;
timer->Interval = span;
timer->Start();
auto rcpt
= timer->Tick +=
ref new EventHandler<Object^>(this, &MainPage::OnTick);
}
void MainPage::OnTick(Object^ sender, Object^ e) {
img->Margin = Windows::UI::Xaml::Thickness(c(), 80, 0, 0);
}
void App1::MainPage::Button_Click(Platform::Object^ sender,
Windows::UI::Xaml::RoutedEventArgs^ e)
{
StartTimer();
}
void App1::MainPage::Button_Click_1(Platform::Object^ sender,
Windows::UI::Xaml::RoutedEventArgs^ e)
{
exit(0);
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7631920
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック