タグ

ブックマーク / 7shi.hateblo.jp (6)

  • IMEの状態を検出 - 七誌の開発日記

    Silverlight 3でIMEの制御は、TextBoxでの有効・無効の設定しかできません。TextBox以外からIMEを利用する方法はありません。キーストロークから文字を取得(例: [Shift]+[1]→!)する方法もありません。 このような状況でエディタを作ろうとすると、全部自前で実装するのは論外とすれば、内部でTextBoxを利用するしか方法がありません。TextBoxでTextChangedイベントが発生したら文字を取り出してエディタに取り込むことで、キーストロークから文字を取得することができます。しかし変換中の文字もTextプロパティに反映されてTextChangedイベントを発生させるため、未確定の文字を取り出す結果になってまともに変換が出来なくなってしまいます。 そのため変換中かどうかを判定して、確定するまで取り出さないようにする必要があります。APIには判定する方法が用

    IMEの状態を検出 - 七誌の開発日記
    terurou
    terurou 2009/09/18
    まぁバッドノウハウなんだけど、すごい
  • XAPコンテンツの読み込み (2) - 七誌の開発日記

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

    XAPコンテンツの読み込み (2) - 七誌の開発日記
    terurou
    terurou 2009/08/19
    Application.GetResourceStream()
  • FontSourceによるフォントの取得 - 七誌の開発日記

    SilverlightではSystem.Windows.Documents.FontSourceでフォントを読み込んで描画に使用できます。GDI+のPrivateFontCollectionに相当しますが、Familiesに相当するものがないため、あらかじめフォント名を調べておく必要があります。mplus-2p-black.ttfなら"M+ 2p"、みかちゃんなら"mikachan"です。みかちゃんをWindowsで開くと書体名が「みかちゃん」と表示されますが、"みかちゃん"と指定しても認識しません。この辺の勝手が分からなくてハマりました。 GDI+のPrivateFontCollectionでフォント名を列挙するコードは以下の通りです(Silverlightでは使えません)。みかちゃんを調べると"mikachan"ではなく"みかちゃん"と出てくるため、必ずしもSilverlightで認識

    FontSourceによるフォントの取得 - 七誌の開発日記
    terurou
    terurou 2009/08/06
    Silverlightアプリにフォント埋め込み/動的にフォントロード
  • WebRequestの同期呼び出し - 七誌の開発日記

    SilverlightのWebRequestには非同期のBeginWebResponseしかありませんが、以下のような拡張メソッドでGetResponse相当の同期呼び出しができます。 メインスレッドからは呼べないので注意が必要です(詳細は後述)。 public static class WebRequestExtension { public static WebResponse GetResponse(this WebRequest req) { var wait = new AutoResetEvent(false); WebResponse ret = null; req.BeginGetResponse(ar => { ret = req.EndGetResponse(ar); wait.Set(); }, null); wait.WaitOne(); return ret; }

    WebRequestの同期呼び出し - 七誌の開発日記
    terurou
    terurou 2009/08/06
    Silverlightで同期通信を無理矢理実装する。
  • WriteableBitmapをBMPで保存 - 七誌の開発日記

    WriteableBitmapのイメージは簡単にBMPファイルとして保存できます。 var bmp = new WriteableBitmap(LayoutRoot, null); var sfd = new SaveFileDialog { Filter = "32 ビット ビットマップ (*.bmp)|*.bmp|すべてのファイル (*.*)|*.*", DefaultExt = ".bmp" }; if (sfd.ShowDialog() == true) { using (var bw = new BinaryWriter(sfd.OpenFile())) { bw.Write((byte)'B'); bw.Write((byte)'M'); bw.Write(54 + bmp.Pixels.Length * 4); bw.Write(0); bw.Write(54); bw.Wr

    WriteableBitmapをBMPで保存 - 七誌の開発日記
  • XAPコンテンツの読み込み - 七誌の開発日記

    ファイルのプロパティでビルドアクションをコンテンツにするとXAPファイルの中に埋め込まれます。XAPファイルをZIPとして展開するとファイルがそのまま出てきます。プログラムから読み込む方法は以下の通りです。 var uri = new Uri("foo.txt", UriKind.Relative); var stream = Application.GetResourceStream(uri).Stream; ファイルが存在しないとApplication.GetResourceStream()はnullを返すので、実際に使うときはチェックした方が無難でしょう。 XmlXapResolver 別の方法としてXmlXapResolverを使った方法があります。Application.GetResourceStream()の方が手軽なので、特にこちらを使う必要はないと思います。 var uri

    XAPコンテンツの読み込み - 七誌の開発日記
  • 1