Silverlight 3 のオフライン機能

Silverlight 3 ではアプリケーションをオフラインで使える機能があります。 Silverlight 3 のアプリケーションで右クリックすると、コンピュータへのインストールというメニューが出てくるので選択すればローカルにインストールすることができます。あとは単体で立ち上げて利用できるというもの 動作については64:20あたりから、実装は63分あたりからになります。 さて、ではすべてのアプリができるかというと実装で見てもわかりますが、オフライン利用のための情報を書き込む必要があります。そしてもちろんSilverlight3 アプリケーションでなくてはなりません。つまり既存のSilverlight 2 アプリケーションの場合は Silverlight 3 アプリケーションへアップグレード オフライン利用のための記述の追加 が必要になります。とはいえおそらくそれほどのオーバーヘッドではないとは思いますけどね。

1

【WPF】 マウス操作時の機能キーを検出する

マウスでドラッグなどをしている際に、Shiftキーや Alt, Control キーなどを検出する。 private void object_MouseMove(object sender, MouseEventArgs e) {         if ( Keyboard.Modifiers == ModifierKeys.Shift )         { : あまりこういった操作を求めるのはUXとしてはあまりよろしくはないんですけどね。ちょっとWinForm 的、というかデザインツール的なものを作るとき、くらいですかね? あくまで補足的に使うようにしましょう。

1

WPFの姿勢

Blend de GO GO! Blend で WPFプロジェクトを作成。 Storyboard でアニメーションを作って(Storyboard1)保存する。これを動的に処理するために、C#側でアニメーションの管理をすることにする。 ひとまずテストだからボタンを作ってClikイベントをダブルクリック、Visual Studio が自動的に立ち上がりプロジェクトを読んで、Button Click のメソッドが出来上がっている。Expression + Blend も進化したなぁ、と感慨に浸りつつ。コーディング。 Storyboard ってあれ?Intellisense が出てこない。 手動で実装? あら、Animation の名前空間のインポートもないのかい?Silverlight ですぐにそのまま使えるのに、ということでこういった機能へのWPFとSilverlightの姿勢が見えてきます。 ひとまず、強引に Storyboard を打って名前空間のインポート宣言を追加。using System.Windows.Media.Animation; が、それでも Storyboard1 インスタンスは使えない。リソースという大奥。に登録され探しに行かないといけない。もちろんもらったらキャスト。 Storyboard str = (Storyboard)FindResource("Storyboard1); ここまで来てようやくアニメーションが動かせるようになる。 str.begin(); まぁ、この辺はトリガを使ってXAMLだけでも実装はできる。ここから動的な処理を入れてこそコード側で実装する意義があるのだ。 違うのだ Srotyboard は主にUXの要素であってUX側で実装するのが自然。という考えがWPFにはあると思う。良い悪いではなくテンプレート一つからWPF開発陣のポリシーみたいなものが見え隠れする野を感じます。 * 尚、画面キャプチャと本文は特に関係はありません。

0

WPF で Bitmapはいきなり悩みますねー

WPFでBitmapを使おうとすると、 Bitmap オブジェクトがない ことに気がつきます。ないんですよね。BitmapImage オブジェクトがあるのでまぁ、そちらを使うのですがこういうこと一つ一つが WinForm からの移行の障壁になるんですよね。 また、BitmapImage からサイズを取得する際に、WidthとHeightプロパティでとっていたらどうしてもうまくいかない。で、プロパティをずっと眺めてみたら、PixelWidthと、PixelHeightがあるじゃないですか。これでようやく解決。 あとは、Image コントロールのSource と BimapImage オブジェクトとの関係ですね。ファイルからならUriで指定すればいいのですが、Bitmapオブジェクトからでは、BmpBitmapDecoder オブジェクトを作ってこれでコンバートしたりして、結構面倒。 WPFの場合コントロールと、エレメントの間で決定的に違いがありその間では簡単なやり取りができず、コンバーターなどを使う必要があります。こういう意識を持っていないと思わぬところではまりますね。

0

Windows Embeded POS Ready 2009 リリース

POS端末向けの組み込みOS Windows Embeded POS Ready 2009 が本日発表されました。 小売業および飲食サービス業の企業向けに Windows(R) Embedded POSReady 2009を提供 Windows Embedded POSReady 2009は、POSソリューションを構築するOEMや、POS機器を使用する企業向けに最適化されたWindows XP Embeded をベースとした組み込み向けのOSです。 Wiindows XP ベースであるため、ハードウェアの対応やカスタマイズ製、ネットワーク機能の対応が豊富で、かつ .NET Framework を使ったアプリケーションも動作させることができます。もちろんSiverlight やWPFを使うこともでき、展示ではWPFやSilverlightで動くPOS端末が展示されていました。 UXが重要なお客様との接点であるPOSにおいてもリッチインターフェースがどんどん加速しています。

1

WPF の面倒なところ:コントロールの移動

面倒というよりも、考え方の違いですが。 Windows Form であれば、フォーム上のコントロールの位置は、 Control.Location.X = 100; Control.Location.Y = 100; というように簡単に設定が出来ます。ところがWPFだとこうはいかない。なぜななら コントロールが置いてあるコンテナとなるパネルによって異なるからです。 Canvas : Position Left, Top Grid : Margin Left, Top 当然親元ごとに異なりますから、Left や Top といったプロパティが直接触れる形でコントロールにインプリメントされているわけではありません。 Canvas.SetLeft( Control, 100); Canvas.SetTop( Control, 100); Grid であれば、 Thickness tk = new Thickness(100, 100, 100, 100); Control.Margin = tk; こんなときなんかは、こんな風に描きたいところですが Control.Margin.Left = 100; Control.Margin.Top = 100; ダメなんですね。なれて覚えてくればなんとも無いのですが、今まで当たり前にやってきたことが出来ない点は「不便」と感じてしまうかも。 しかし、Grid の性質を考えればこういった形で設定することが理にかなっていますし慣れれば非常にシンプルな実装が可能です。まずは小さいプログラムからはじめることが大事ですね。

0

【WPF】名前なしスタイル

WPFでスタイルとテンプレートがあります。 どちらもコントロールのデザインを変更するための大事な機能です。基本的な機能としては、 スタイルはプロパティをまとめて管理することが出来る機能、テンプレートはコントロールなどの概観を変更すことが出来る機能です。 ただ、スタイルがさす「プロパティ」というのがキモで、ほとんどのWPFコントロールはテンプレート設定も、アニメーションも含めてかなりの機能がプロパティで設定できる用になっています。つまり、スタイルはコントロールカスタマイズを一手にまとめることが出来ます。 更にスタイルの固有の点は適応範囲を自由に選べることかもしれません。スタイルは上位で設定することでその下位のオブジェクトにも影響を与えます。そのためグループ化をして設定することも出来ます。更にスタイルに名前をつけて個々のコントロールからスタイルを選んで設定することも可能です。 名前なしスタイルは個別の設定をしなくても、配下のコントロールに適応できる、かなりの荒業ですが、この昨日のおかげで統一されたデザインやシンプルなソースコードが実現できています。

1

Windows7 で見つけた素敵なもの!

メモ帳のフォントを変えようと思って見つけたもの! メイリオUI ? 確かに、行間も文字間もシステムフォントとして使えるように詰まってる!これはすごくうれしい。もう悪いことをする必要はないですね。:P ちなみに別ファイルではなく1つのファイルに(meiryo.ttc, meiryo.ttc)にメイリオ、メイリオUIが入っている形になっていました。

2

Vista の起動登録

Vistaを入れなおした際に、別ドライブのVistaの起動メニューがなくなってしまった場合などの対処方法。ブートメニューへの登録方法です。 ケースとしては、デュアルブート環境(C:, D:)でブートパーティション(C:)にOSを上書きしてしまった場合。 BCDEDITを使ってVista のブートエントリーの追加です。コマンドプロンプトを管理者権限で起動して以下のコマンドを順次いれていきます。 bcdedit /create /d “Windows Vista until Oct2008” /application osloader この結果で表示される{GUID}をコピーしておきます。 bcdedit /set {GUID} device partition=d: bcdedit /set {GUID} path \windows\system32\winload.exe bcdedit /displayorder {GUID} /addlast bcdedit /set {GUID} osdevice partition=d: bcdedit /set {GUID} systemroot \windows bcdedit /set {GUID} nx optin これで、ブートエントリーにVistaのブートエントリーが追加されました。XPなら{ntldr}でもうちょっと簡単ですね。 この辺なんか楽に出来る方法があると良いんですけどね。

2

Illustrator から Blendのパーツを使う注意

Expression Design を使って Illustratorでデザインしたパーツをインポートすることが出来る。 ただしその場合も注意する必要がある。 お手軽 Illustrator からのコピペは極力使わない やたら数多くのクリッピングマスクが作られたり、そのせいで境界などのデザインが怪しくなる。簡単なもの意外は極力使わないほうが良い。 基本はIllustratorのいんポート 基本的にはAIファイルをDesignで読み込む。BlendにはそこからコピペでもExportでも良い。ただしグラデーションなどクリッピングマスクやオブジェクトに分割されることもあるので、注意したほうが良い。場合によっては同じデザインをBlendで作ったほうがシンプルに1つのオブジェクトで構成できることもある。 グラデーションの最現は倍によってはスポイトツールで直接色をとる このほうが簡単で正確な場合もある。 結局Illustrotorでのデザインをどうしたいのかによって推奨する方法が異なってくる。 どこまで正確に再現する必要があるのか、 デザインを何に使うのか? コントロールのテンプレートにするのか、もしくはカスタムコントロールを作るのかによっても、多少使えるプリミティブも変わってくることがある。デザインを細かくやりたいなら Borderパネルは強力な武器だが、コンテナとしては貧弱。 ドロップダウンの表現は複数のグラデーションとなったオブジェクトを作るが、Blendでドロップダウンのエフェクトを使ったほうがいいこともある。透明度などでアニメーションを使ったON・OFFも出来る。 本当にデザインとして何がやりたいのか、の判断が必要でありまたBlendでどこまで出来るのか、WPFの表現力は何があるのか?そして、Illustratorのデザインパターンをすべて知っている必要がある。少なくとも両者を使いたければ、両者をわかっている人間が1人はいないと、かなり苦労するかも知れません。 それよりも、デザイナーの方に Expression を覚えてもらったほうがいいかもしれません。

3