Archive for 2010年12月

Splashtop OS

2010年12月7日

http://os.splashtop.com/

マイクロソフトがDeviceVM社と組み、瞬間起動するOS「Splashtop OS」の無料ダウンロードを開始。

ただし、今サポート対象は次のデバイスのみ。

• HP Mini 110
• Compaq Mini CQ10
• HP Mini 210
• HP Pavilion dm4
• HP Pavilion dv4
• HP Pavilion dv5
• HP Pavilion dv6
• HP Pavilion dv7

手持ちのWindows 7でインストールしてみたが、インストールに失敗。

WPF におけるマルチタッチ操作イベント

2010年12月5日

http://msdn.microsoft.com/ja-jp/magazine/ff898416.aspx

Charles Petzold 偉大だ。久々にコードを読んで感動した。

なお、Windows Phone 7 によるサポートで、ManipulationStarting, ManipulationInertiaStarted, ManipulationBoundaryFeedbackはサポートされていないらしい。

Intel GMA のバージョンをあげてみる

2010年12月2日

出荷時(Inetl Graphics Media Accelerator 500 2010/09/21 version 8.14.10.12026)

プロセッサ 2.1

メモリ 4.2

グラフィクス 4.5

ゲーム用グラフィクス 2.0

プライマリハードディスク 5.2

————–

(Inetl Graphics Media Accelerator 500 2010/09/16 version 8.14.10.12030)

プロセッサ 2.2

メモリ 4.3

グラフィクス 4.4

ゲーム用グラフィクス 2.4

プライマリハードディスク 5.2

スレートPC上でのマルチタッチ開発メモその1

2010年12月1日

ONKYOのスレートPCを入手した。

tw217_main

http://www.jp.onkyo.com/pc/personalmobile/

さっそく、マルチタッチアプリケーションを作ってみる。

まずは、スレートPC上では開発できないというか、とてもやりにくいので、メインPC上で開発して、スレートPC上で動作させる形。リモートデバッグはできないので、ちょっと厄介かも。

ちょっとイベントがどのように取れているのか確認するプログラムをWPFで作ってみる。

.NET Framework 4.0 がないと動かないので、.NET Framework 4.0をインストール。

TouchEnter, TouchMove, TouchLeave, TouchUp関連は、

private void image1_TouchMove(object sender, TouchEventArgs e)
{
    this.textBoxTouchType.Text = “TouchMove”;

    ShowTouchParams(e);
}

private void ShowTouchParams(TouchEventArgs e)
{
    this.textBoxID.Text = “Touch ID = ” + e.TouchDevice.Id;

    TouchPoint tp = e.GetTouchPoint(this);

    this.textBoxPointX.Text = tp.Position.X.ToString();
    this.textBoxPointY.Text = tp.Position.Y.ToString();
    this.textBoxWidth.Text = tp.Size.Width.ToString(); // 値取れず
    this.textBoxHeight.Text = tp.Size.Height.ToString(); // 値取れず

    this.textBoxBoundsX.Text = tp.Bounds.X.ToString();
    this.textBoxBoundsY.Text = tp.Bounds.Y.ToString();
    this.textBoxBoundsW.Text = tp.Bounds.Width.ToString(); // 値取れず
    this.textBoxBoundsH.Text = tp.Bounds.Height.ToString(); // 値取れず
}

Manipulation系は、

IsManipulationEnabled を trueにセットして、
private void checkBoxManipulationEnabled_Click(object sender, RoutedEventArgs e)
{
    this.image1.IsManipulationEnabled = (bool)checkBoxManipulationEnabled.IsChecked;
    this.textBoxManipulation.Text = this.image1.IsManipulationEnabled.ToString();
}

private void image1_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    this.textBoxManipulation.Text = “ManipulationDelta”;
    this.textBoxRotationDelta.Text = e.DeltaManipulation.Rotation.ToString();
    this.textBoxManipulationOrigX.Text = e.ManipulationOrigin.X.ToString();
    this.textBoxManipulationOrigY.Text = e.ManipulationOrigin.Y.ToString();
    this.textBoxRotation.Text = e.CumulativeManipulation.Rotation.ToString();
    this.textBoxManTransX.Text = e.CumulativeManipulation.Translation.X.ToString();
    this.textBoxManTransY.Text = e.CumulativeManipulation.Translation.Y.ToString();

    if (e.DeltaManipulation.Rotation != 0)
    {
        Matrix mat = this.image1.RenderTransform.Value;
        mat.RotateAt(e.DeltaManipulation.Rotation, e.ManipulationOrigin.X, e.ManipulationOrigin.Y);
        this.image1.RenderTransform = new MatrixTransform(mat);
    }
    else
    {
        Matrix mat = this.image1.RenderTransform.Value;
        mat.Translate(e.CumulativeManipulation.Translation.X, e.CumulativeManipulation.Translation.Y);
        this.image1.RenderTransform = new MatrixTransform(mat);
    }
}

イナーシャーは、

private void checkBoxInertier_Click(object sender, RoutedEventArgs e)
{
    if(checkBoxInertier.IsChecked == true)
        Manipulation.StartInertia(this.image1);
}

private void image1_ManipulationInertiaStarting(object sender, ManipulationInertiaStartingEventArgs e)
{
    this.textBoxManipulation.Text = “ManipulationInertiaStarting”;
    this.textBoxManipulationOrigX.Text = e.ManipulationOrigin.X.ToString();
    this.textBoxManipulationOrigY.Text = e.ManipulationOrigin.Y.ToString();

    e.TranslationBehavior.DesiredDeceleration = 0.001;
    e.RotationBehavior.DesiredDeceleration = 0.001;
}

これで、Delta, Cumulative が取れた。イベントをモニタリングのためにTextBoxに書き出していたら、かなりもっさりした感じになってしまった。

リモートデバッグできないのは、やっかいだな。

移動・ローテーションは、もう少しまともなコードの気がするが、とりあえず機能の説明を忘れないうちにっと。あとでスクリーンショットをもらおう・・・