【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

2009-01-01から1年間の記事一覧

関数ポインタのマーシャリング

.NET Compact Framework 2.0では関数ポインタのマーシャリングがサポートされましたが、引数や戻り値の型に制限があります。boolは変換できないためNotSupportedExceptionになります。boolの代わりにintを使えば問題ありません。このことを知らずにP/Invoke…

TextBoxを流用したIME入力

IMEの状態が検出できるようになったので、内部でTextBoxを利用して独自コントロールで文字入力してみました。 ⇒ 動作確認とソースキャレットは点滅しません。カーソルキーやクリックで移動できません。編集は[Backspace]だけです。たまに変換中に文字を取り…

IMEの状態を検出

Silverlight 3でIMEの制御は、TextBoxでの有効・無効の設定しかできません。TextBox以外からIMEを利用する方法はありません。キーストロークから文字を取得(例: [Shift]+[1]→!)する方法もありません。このような状況でエディタを作ろうとすると、全部自前…

再生・一時停止・停止ボタン

デバッガもどきを作ろうとして挫折しました。後で使い回すかもしれないので、ボタンのXAMLを貼っておきます。画像ファイルを用意しなくてもアイコンが作れるのが新鮮でした。

YOPViewer.NETのデッドロック対策

【注】2010年12月10日以降、仕様変更により利用不可となりました。暗号化のため対応は不可能です。id:n7shi:20090907のコメントでmmmtokさんからページをめくるときにフリーズするというご指摘がありました。修正したものを公開します。id:n7shi:20090106の…

YOPViewer.NET 1.1 (メモリ節約版)

id:n7shi:20090201のコメントでmmmtokさんにメモリを節約する方法を教えていただきました。 次のようにBitmapのコンストラクタにformatを指定すると、使用メモリが減るようです。 new Bitmap(w, h, PixelFormat.Format16bppRgb565); 修正したものを公開しま…

WebRequestの同期呼び出し (2)

id:n7shi:20090731:1248967824でMonitorを取り上げましたが、AutoResetEventを使った方が簡単だということが分かりました。詳細はid:n7shi:20090731:1248967824を修正したのでそちらを参照してください。AutoResetEventについてはParallel で最適化してみる…

wonderflのコード一覧表

オンラインでFlashが開発できるwonderflのコード一覧表を作成しました。集計できたのは約18,000件です(公式発表では2009年6月時点で27,717件)。データが巨大なためExcelファイルを圧縮して置いておきます。 wonderfl.zip 本家にはタイトルをブラウズするよ…

XAPコンテンツの読み込み (2)

id:n7shi:20090714でXmlXapResolverを取り上げましたが、Application.GetResourceStream()を使った方が簡単だということが分かりました。詳細はid:n7shi:20090714を修正したのでそちらを参照してください。

MIZU GAME for Windows Mobile

id:fslashtさんのMIZU GAMEをCompact Frameworkに移植しました。id:n7shi:20090106の方法により無料のVC# Expressで開発しています。PCとWindows Mobileの両方で動きます。ダウンロードは以下です。 MizuGame.CAB (Windows Mobile用CABインストーラ) MizuGam…

MIZU GAME for Silverlight

id:fslashtさんのMIZU GAMEをSilverlightに移植しました。動作確認とソースのダウンロードは以下です。 MIZU GAME for Silverlight オリジナルを初めて起動したとき、流れるような水の表現に圧倒されました。それを再現するため、SDL.NETを使用している部分…

スーパーマリョーワールド(仮) CABインストーラ

スーパーマリョーワールド(仮)のWindows Mobile用CABインストーラを作成しました。分散するとわかりにくくなるため、以前のエントリにまとめて置きます。 id:n7shi:20090801 操作のときにIMEが邪魔になるため、起動時にIMEをオフにするようにしました。参考…

FontSourceによるフォントの取得

SilverlightではSystem.Windows.Documents.FontSourceでフォントを読み込んで描画に使用できます。GDI+のPrivateFontCollectionに相当しますが、Familiesに相当するものがないため、あらかじめフォント名を調べておく必要があります。mplus-2p-black.ttfなら…

MediaElementとビジュアルツリー

MediaElementをXAMLに記述しないでコードから呼ぼうとしてハマりました。検索しても情報が錯綜しています。 id:beta_magnus:20090625:1245906963 : SilverlightのMediaElementはビジュアルツリーに組み込まないと音声再生などができないらしい、という噂を聞…

Super Maryo World for Silverlight

id:n7shi:20090801のスーパーマリョーワールド(仮)をSilverlightに移植しました。実際にプレイできます。動作確認とソースのダウンロードは以下です。 Super Maryo World for Silverlight 移植にはid:n7shi:20090730で開発したWindows Formsエミュレーション…

Super Maryo World for Windows Mobile

牧本さんのスーパーマリョーワールド(仮)の.NET Framework版をCompact Framework用に手直ししました。id:n7shi:20090106の方法により無料のVC# Expressで開発しています。PCとWindows Mobileの両方で動きます。ダウンロードは以下です。 SuperMaryoWorld.CAB…

アニメーションGIFの変換

C#

SilverlightではGIFが使えません。PNGに変換しようとしたのですが、数が多くてアニメーションGIFが混ざっていたため、GDI+(System.Drawing)で情報を取得して変換しました。変換部分のコードは以下の通りです。

WebRequestの同期呼び出し

SilverlightのWebRequestには非同期のBeginWebResponseしかありませんが、以下のような拡張メソッドでGetResponse相当の同期呼び出しができます。メインスレッドからは呼べないので注意が必要です(詳細は後述)。

h01/y01 for Silverlight

id:m107さんのh01とy01をSilverlightに移植しました。ゲームとしては遊べませんが、実験の一環です。動作確認とソースのダウンロードは以下です。 キャラクタが一人 キャラクタが四人 拡大・縮小・スクロール キャラクタの移動 効果音 フリック動作 BGM アイ…

UIElementをXAMLで出力

UIElementをラスターデータで出力するのにはWriteableBitmapが使えますが、ベクターデータで出力するのにXAMLを使ってみました。サンプルではVisual TreeをTreeViewで表示しているため、コントロールの内部構造と比較できます。 ⇒ 動作確認とソースSilverlig…

WriteableBitmapをBMPで保存

WriteableBitmapのイメージは簡単にBMPファイルとして保存できます。 var bmp = new WriteableBitmap(LayoutRoot, null); var sfd = new SaveFileDialog { Filter = "32 ビット ビットマップ (*.bmp)|*.bmp|すべてのファイル (*.*)|*.*", DefaultExt = ".bmp…

Andromeda for Silverlight

自作言語AndromedaをSilverlightに移植しました。Win32バイナリを出力するネイティブコンパイラです。動作確認とソースのダウンロードは以下です。 Andromeda for Silverlight Andromeda クラスマップ ツリーのSamplesからビルドしたいサンプルを選んで[Buil…

Cyan/Yellow for Silverlight 3

id:takuto_hさんのCyanとYellowの移植をSilverlight 3に対応しました。動作確認とソースのダウンロードは以下です。 Cyan for Silverlight Cyan クラスマップ Yellow for Silverlight Yellow クラスマップ 変更点は以下の通りです。 ドキュメントリストをLis…

TreeViewのダブルクリック

Silverlight 3でTreeViewがサポートされました。デフォルトでは参照されないため、System.Windows.Controls.dllを参照に追加する必要があります。ItemsにはTreeViewItem以外も入れられますが、子ノードをぶら下げられるのはTreeViewItemだけです。以下は親ノ…

ListBoxのホイール対応

Silverlight 3でMouseWheelがサポートされたためListBoxをスクロールさせようとしましたが、Silverlight 2とは仕様が変わっていることに気付きました。Silverlight 2のListBoxのScrollViewerはVerticalOffsetがドット単位でしたが、Silverlight 3では行単位…

URLからキャッシュを探す

閉鎖やサーバー障害などで見たいページが消えたときにInternet Archiveや検索エンジンのキャッシュを調べることがあります。前者はクロール間隔が長いため最新でなかったり漏れがあったりしますし、後者はキーワードが分からないとキャッシュにたどり着けな…

C#プログラマのためのF#入門

C# F#

C#経験者が手っ取り早くF#を使おうとすると、クラス定義の文法がかなり違うことに戸惑うと思います。そこでクラス定義を中心にC#からF#への変換方法をまとめました。 F# - 七誌の開発Wiki すべてのサンプルでC#とF#を併記しています。C#の知識を基にF#を使い…

Yellow for F#

F#

id:takuto_hさんの試作言語YellowをF#に移植しました。 YellowFS-20090720.zip F#は簡潔に記述できる言語です。単に文法の違うC#として使っても、記述性の面でメリットはあると思います。もっとも実用面ではVisual Studioのサポートが極端に違うためなかなか…

Silverlight 3の追加点

Silverlight 3がリリースされました。標準的に使う以下のライブラリを調査しました。 mscorlib.dll System.dll System.Core.dll System.Net.dll System.Windows.dll System.Windows.Browser.dll System.Xml.dll Silverlight 2と比較して、100個のpublicなク…

Yellow for Silverlight

Cyanに引き続き、id:takuto_hさんの試作言語YellowをSilverlightに移植しました。Yellowのクラス構成もマップ化して分析しました。動作確認とソースのダウンロードは以下です。 Yellow for Silverlight Yellow クラスマップ YellowもCyanと同様に少しの修正…