2006年10月05日
川俣晶の縁側ソフトウェア技術雑記total 5157 count

トランプカードをドラッグで移動する for Windows Mobile 5.0

Written By: 川俣 晶連絡先

 W-ZERO3用のテストプログラムとして、トランプカードをドラッグで移動するというプログラムをC#で書いてみました。

 しかし、簡単かと思ったら大間違い。

 非力なデバイスを扱うというのがどういうことか、思い知らされました。

プログラムのCabファイル(インストール可能) §

テストプログラム(Cab)

(これを使うと、お手元のW-ZERO3と、たぶんWindows Mobile 5.0対応機種で実行させることができます)

スクリーンショット

 トランプのカードをドラッグで移動させることができます。機能はそれだけです。

技術的な問題 §

 一見、とても簡単に見えますね。

 しかし、やってびっくり。そうでもないのです。

 本来の意図は、最大で数百枚のトランプカードを画面に並べてドラッグで操作できるようにするというものです。

 とりあえず、PictureBoxコントロールを52枚貼り付けるテストプログラムを作り、これにドラッグで移動を行うコードを追加したところ、論外の重さとなりました。

 ここで、Managed DirectXという選択肢もありますが、DirectDrawでダブルバッファリングなどするとCPUパワーをめいっぱい使ってバッテリが浪費されそうだな……と(根拠はないが)思ったので、とりあえず棚上げ。

 動かないカードは背景の1枚のビットマップに描いておき、ドラッグで動くカードだけPictureBoxコントロールに描くという方針に転換して試してみました。

 しかし、これも上手く行きません。残像が出るのです。

 より正確に言えば、コントロールが移動して見えるようになった背景の再描画が行われる前に、次のMouseMoveイベントが処理されているということです。これが繰り返されると、再描画待ちの過去のウィンドウの残骸が次々と増えていきます。

 しょうがないので、MouseMoveイベントでコントロールを移動させた直後に、以下の1行を入れてフォームを再描画させるようにしました。

this.Update();

 完全に綺麗ではありませんが、まあ実用十分という感じでしょう。

感想 §

 これはもう、完全にプログラマの腕とセンスが問われる世界です。

 いかにして、見た目のリッチさを保ちつつ処理量を減らすかの勝負です。

 まさに8bitパソコン時代の感覚に復帰したようなものです。凄いW-ZERO3アプリは、知力勝負に競り勝った者だけが作り出せるのでしょう、たぶん。

使用画像について §

トランプの画像は下記より入手した著作権フリーのデータを加工したものです。

http://www.geocities.jp/ibezou/hpsozai.html

背景の写真は私が撮影したものです。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2006年
10月
10日
System.Net.Sockets.TcpClient.Client プロパティの.NET Framework 1.1~2.0間の非互換性「制限解除」
3days 0 count
total 4600 count
【技術雑記】の前のコンテンツ
2006年
10月
05日
本当に使えるソースコード検索がここに! これは便利だ!!
3days 0 count
total 8164 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20061005174846
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.