Hatena::ブログ(Diary)

Yuya Yamaki’s blog このページをアンテナに追加 RSSフィード

2013年11月27日(水曜日)

RenderTargetBitmap.RenderAsyncメソッドの実行は画面に表示されたUIElementに限る

画面上のオブジェクトを画像に変換にする「あの機能が」が帰って来た! - マイクロソフト エバンジェリストのブログ


 上記のblogで書かれているように、Windows 8.1のWindowsストアアプリでは新たに追加されたRenderTargetBitmapクラスを使ってUIElementを画像に変換することができるようになりました。


 しかし、このblogに書かれている「画面上のオブジェクト」という部分が非常に重要です。


            var btn = new Button();
            var rtb = new RenderTargetBitmap();
            await rtb.RenderAsync(btn);


 たとえば上記のようなコードを実行すると、「Value does not fall within the expected range.」というArgumentExceptionが発生します。


f:id:Yamaki:20131126215046p:image


これはUIElementを単純にインスタンス化しただけで画面上に表示していないことが原因です。RenderAsyncメソッドを実行するにはUIElementがVisualTreeにきちんと追加されている必要があるようです。ちなみにWindows Phone(Silverlight)のWriteableBitmap ではインスタンス化しただけでも問題なくビットマップを取得できていたため、Windows Phoneアプリからの移植の場合につまずきやすいポイントだと思います。


            var btn = new Button();
            var rtb = new RenderTargetBitmap();
            LayoutRoot.Children.Add(btn);
            await rtb.RenderAsync(btn);


 このようにパネルに追加するコードを1行追加するだけで、正常にUIElementをビットマップ化することができます。画面上に表示されるのが都合が悪い場合は、追加するパネルのOpacityプロパティを0にすれば対応可能です。

2013年08月07日(水曜日)

Windows 8.1 Previewで変わったストアアプリの終了方法

How to close Windows Store Metro Apps in Windows 8.1


 Windows 8でストアアプリを終了させる場合、画面の上端をつかんで下端までドラッグ&ドロップするという方法がありました。Windows 8.1 Previewではこの方法でアプリが終了しなくなっています。実際にこの方法をWindows 8.1 Previewで試してみると、アプリスイッチャーにはアプリが表示されなくなるため終了したように思ってしまいますが、タスクマネージャを確認するとアプリは終了していないことがわかります。


Windows 8でストアアプリを本当に終了させるには、画面の上端をつかんで下端までドラッグし、その状態で2、3秒ほどクリックをしたままの状態とします。そうすると、アプリの画面が反転してアイコンが表示された状態となります。


D


 この状態になった上でドロップすれば、アプリが完全に終了します。タスクマネージャで確認する際は、終了するまでに10秒くらいはかかるので注意してください。


 より詳しい紹介動画があることを動画アップロード後に知りました。こちらをご覧いただいたほうが理解しやすいと思います。


D


2013年07月22日(月曜日)

Windows 8.1 Previewにおける8つのデスクトップ派ユーザー向け機能

  1. スタートボタン(デフォルトで表示、むしろ非表示にできない)
  2. 起動時にデスクトップを表示
  3. 左上にマウスを持っていってもアプリスイッチャーを表示しない(これによって左上で連続クリックしてアプリを切り替えることができなくなる)
  4. 完全にアプリスイッチャーを無効にする(Alt + Tabはデスクトップアプリのみを切替)
  5. 右上にマウスを持っていってもチャームを表示しない(ウィンドウの×ボタン押すときに邪魔にならない)
  6. スタートボタン押したときにアプリビューを表示する
  7. アプリビューのカテゴリによるソートでデスクトップアプリを先頭に表示する
  8. スタートボタンを右クリックしてシャットダウンができる


 上記の機能のほとんどは下の図の[タスクバーとナビゲーションのプロパティ]ダイアログの[ナビゲーション]タブから設定できます。


f:id:Yamaki:20130722155504p:image


 ただし、4番目の「完全にアプリスイッチャーを無効にする」というというのはMetroな画面のほうの「PC設定」から設定します(この機能は結構強力だと思う)。[PCとデバイス]-[コーナーとエッジ]にある「アプリを切り替えて使う」をオフにします。


f:id:Yamaki:20130722161224p:image


 これをオフに設定すると3番目の設定であるタスクバーとナビゲーションのプロパティ]ダイアログの「左上隅をクリックしたときに、最近使ったアプリを切り替える」のチェックボックスは無効化されます。


 細かい動きは言葉で説明するのは難しいので、Preview版をインストールされている方は是非試してみてください。


2013年07月05日(金曜日)

一つの画面に3つ以上ストアプリを表示する条件

f:id:Yamaki:20130705100128p:image


 blogの投稿がほとんどなくてすみません。これまではきちんとした記事っぽくblogを書こうと努めていたのですが、あまりblogに時間をとれませんので、今後はもっとライトに、ある意味blogっぽく書いていこうと思います。


 Windows 8.1になり、スナップ状態といった動作は関係がなくなり、普通にストアプリを複数表示することができるようになったのは多くの方がご存知かと思います。もし、知らなかったという方は以下の動画をご覧ください。


D


 では、一つの画面にはいくつまで同時にストアプリを表示することができるのでしょうか。それは画面の横方向の画素数(一般的には解像度と呼ばれているもの)に依存します。ドキュメントとして記載があったわけではないのですが、どうも500ピクセル単位で表示できるアプリが増えるようです。つまり、1000ピクセル以上1500ピクセル未満の解像度では2つ、1500ピクセル以上2000ピクセル未満では3つ、2000ピクセル以上では4つです。実環境がないのでシミュレータで試しただけなのですが、2560ピクセルの環境で5つは表示できないことから、最高で4つまでのなのかもしれません。誰かKIRAとかIGZO持っている方がいましたら、試して教えてください。