2010年02月09日(火曜日)
SilverlightでGIF画像
BitmapImage Class (System.Windows.Media.Imaging)
The BitmapImage can be used to reference images in the JPEG and PNG file formats.
BitmapImage を使用すると、JPEG および PNG ファイル形式のイメージを参照できます。
Silverlightで表示可能な画像の形式はJPEGとPNGです。アプリケーションで使用する画像をすべて自前で用意する場合には単純にあらかじめ変換しておけばよいだけの話ですが、外部のサービスと連携してそこから画像を取得するとなるとそうもいきません。
MAKOTO3.COM » Blog Archive » SilverlightがGIFをサポートしていないのは、やはりちょっと困る……
楽天のWebサービスを使って商品画像をとってくると、けっこうGIF画像が含まれているので、Silverlightで表示できないという問題にぶつかりました。
他にも、たとえばTwitterクライアントをSilverlightで作成した場合、TwitterのアイコンはGIFもサポートしているためGIF形式の画像を使っている人のアイコンは表示されないという問題が発生します。
TwittZure - Twitter on Windows Azure
ComponentOne Studio 2010JにはC1Imageというコントロールが含まれており、このコントロールを使うことでSilverlightで簡単にGIF画像を表示することができます。もちろんアニメーションGIFにも対応しています。
このコントロールはクライアント側のみでデコードを行いますので、もちろんサーバー側にサービスを用意する必要はありません。
ComponentOne Studio 2010Jは、明日(2010年2月10日)発売です。
2010年01月27日(水曜日)
SilverlightでDataSet
SilverlightではDataSetがサポートされてい(DataSetやDataTableといったクラスがあり)ません。新規開発であれば、ADO.NET Data Servicesフレームワークや今後正式なリリースが予定されているWCF RIA Servicesを使う方法になるかと思いますが、既存資産の活用という観点ではSilverlightにもDataSetが欲しいところです。
2月10日にグレープシティから発売予定のComponentOne Studioに含まれるSilverlightコンポーネントでは、「C1.Silverlight.Data.dll」というアセンブリにおいてDataSet、DataTable、DataViewといったおなじみのクラスが提供されており、これらを利用することでDataSetを使った既存資産をSilverlightでもほぼそのまま活用することができます。
例えば、Windowsフォームで下記のようにコーディングしていたものは、
Windowsフォーム
private void _btnCommit_Click(object sender, EventArgs e)
{
if (_ds != null)
{
// 変更状態ごとにバイト配列に格納します
byte[] dtAdded = GetChanges(DataRowState.Added);
byte[] dtModified = GetChanges(DataRowState.Modified);
byte[] dtDeleted = GetChanges(DataRowState.Deleted);
// サービスの呼び出し
var svc = GetDataService();
svc.UpdateData(dtAdded, dtModified, dtDeleted);
}
}
byte[] GetChanges(DataRowState state)
{
DataSet ds = _ds.GetChanges(state);
if (ds != null)
{
MemoryStream ms = new MemoryStream();
ds.WriteXml(ms);
return ms.ToArray();
}
return null;
}
ComponentOne Studioの「C1.Silverlight.Data.dll」を使うことで、
Silverlight
private void _btnCommit_Click(object sender, RoutedEventArgs e)
{
if (_ds != null)
{
// 変更状態ごとにバイト配列に格納します
byte[] dtAdded = GetChanges(DataRowState.Added);
byte[] dtModified = GetChanges(DataRowState.Modified);
byte[] dtDeleted = GetChanges(DataRowState.Deleted);
// サービスの呼び出し
var svc = GetDataService();
svc.UpdateDataCompleted += svc_UpdateDataCompleted;
svc.UpdateDataAsync(dtAdded, dtModified, dtDeleted);
}
}
byte[] GetChanges(DataRowState state)
{
DataSet ds = _ds.GetChanges(state);
if (ds != null)
{
MemoryStream ms = new MemoryStream();
ds.WriteXml(ms);
return ms.ToArray();
}
return null;
}
void svc_UpdateDataCompleted(object sender, UpdateDataCompletedEventArgs e)
{
if (!string.IsNullOrEmpty(e.Result))
{
throw new Exception("サーバーの更新中にエラーが発生しました。: " + e.Result);
}
_tbStatus.Text = "サーバーに変更が適用されました。";
_ds.AcceptChanges();
}
のようにSilverlightで書きなおすことができます。SilverlightではWebサービスの呼び出しが非同期に限られているため少しコーディング量が増えていますが、もしWindowsフォームでも非同期呼び出しを行っていればまったく同様となります。上記の部分で異なってくるとすれば、ボタンのClickイベントの引数がRoutedEventArgsになるくらいです。
この「C1.Silverlight.Data.dll」を使用したサンプルプロジェクトを下記の場所に置いておきます。
DataSetを使用したマスター詳細サンプル(C1.Silverlight.Data)
このサンプルプロジェクトは本日(1/27)に公開になったComponentOne Studioのトライアル版でもお試しいただけます。ぜひインストールして実際に触ってみてください。
2010年01月25日(月曜日)
Developers Summit 2010
2010年2月18日(木)〜2月19日(金)の2日間、Developers Summit 2010が開催されます。
グレープシティもブース出展で参加するほか、「WPF 4とSilverlight 4、これから業務アプリを開発するならどっち?」というタイトルで1セッション私が担当させていただきます。本日[残席僅か]となりましたので、ご参加いただける方は早目のご登録をお願いいたします。
また、このセッションに連動する形でセッションタイトルそのままのアンケートを実施しています。
セッションにご参加いただける方も、そうでない方も、ご協力よろしくお願いいたします。アンケート結果はセッション内で発表します。
2010年01月20日(水曜日)
無償でPC画面上の操作をキャプチャできるソフト「Expression Encoder 3無料版」
Microsoft Expression Encoder 3(フリー版)でスクリーンキャストを撮る方法 - あおきのTechメモ
Microsoft Expression Encoder 3には、「Encoder 3」とは別に「Encoder 3 Screen Capture」というソフトが付属しており、これを使うことでPC画面上の操作、あるいはWebカメラ の映像などをキャプチャして編集することができます。このことはマイクロソフトの新村さんのblogなどでも紹介されており、ご存知の方も多いかと思います。
しかしながら、この「Encoder 3 Screen Capture」は無償で利用できるということをご存知でしたでしょうか。私は知りませんでした。
Expression Encoder 3の通常版は単体では販売しておらず、以下の製品に含まれています。
- Expression Studio 3
- Expression Web 3
- Expression Professional Subscription
この通常版からIIS Smooth StreamingとH.264エンコーディングのサポートを抜いたものが、無償で提供されているExpression Encoder 3無料版です。
「Encoder 3 Screen Capture」は、この無料版にも含まれています。具体的な使い方などは下記のblogが詳しいかと思います。
2010年01月12日(火曜日)
わんくま同盟 東京勉強会 #42
2010年1月16日(土)に新宿で「わんくま同盟 東京勉強会 #42」が開催されます。
今回はWPF/Silverlight Dayとなっており、マイクロソフトさんからはジニアス平井さんと大西さんのお二人という豪華メンバーがご登壇となっています。そのお二人とえムナウさんのお三方でWPFやSilverlightについてのお題についてその場でコーディングをしながら解説するというセッションは、初めての試みだそうでおもしろそうです。
私も30分のミニセッションと初めてライトニングトークに挑戦します。まだ参加登録は可能なようですので、都合がつく方はぜひご参加ください。
2010/01/18セッション資料追加
エフスタ!!勉強会 Vol.1
2010年2月6日(土)に福島県の郡山市で「エフスタ!!勉強会 Vol.1」が開催されます。
「エフスタ!!」は東北(福島県)からIT情報を発信するITエンジニアのためのスキルアップ応援コミュニティです。今回マイクロソフトさんから松崎さんと小高さんのお二人がご登壇されることになっており、東北地方では貴重な勉強会と言えそうです。
私も「やっぱり新しいものはいいのだ♪WPF/Silverlightで変わるUI開発の世界」というタイトルで、WPF/Silverlightの主に業務系における魅了をご紹介する予定です。
福島県在住の方はもちろんのこと、宮城、山形、新潟、栃木、茨城で比較的近い場所にお住まいの方も、ぜひご参加いただきたいと思います。







