トップ «前の日記(2013-02-06) 最新 次の日記(2013-02-09)» 編集

日々の破片

著作一覧

2013-02-08

_ Windowsストアアプリ APIの謎

MSDNのWindows 8 Input: Ink sample in C#/Xamlを眺めているのだが、とても不思議だ。

                Windows.Storage.Pickers.FileSavePicker save = new Windows.Storage.Pickers.FileSavePicker();
                save.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
                save.DefaultFileExtension = ".png";
                save.FileTypeChoices.Add("PNG", new string[] { ".png" });
                StorageFile filesave = await save.PickSaveFileAsync();
                using (IOutputStream ab = await filesave.OpenAsync(FileAccessMode.ReadWrite))
                {
                    if (ab != null)
                        await m_InkManager.SaveAsync(ab);
                }

これでpngファイルが書けるらしいのだが、なぜだ?

InkManagerはIOutputStreamのインスタンスabを受け取っているだけだが、出力の主体はInkManagerだ。だが、IOutputStreamにはメタデータ(出力タイプなど)を公開しているわけではない。

可能性の1つはInkManagerは常にPNGを出力するというものだ。

試しに以下に変えてみる。

                save.DefaultFileExtension = ".jpg";
                save.FileTypeChoices.Add("JPG", new string[] { ".jpg" });

うーん、JPGで書かれた……待てよ。と、ここでおれがPNGで書かれた、JPGで書かれたと書いているのはExplorerのファイルタイプ表示からだ。もしかして、これって単に拡張子データベースから値を引っ張っているだけかも。

というわけで、出力されたpngとjpgをダンプしてみる。

47 49 46 38 39 61 BB 03 18 02 F7……

おい、GIF89aじゃないか。何がPNGだよ。

本日のツッコミ(全2件) [ツッコミを入れる]
_ arai (2013-02-09 10:23)

http://msdn.microsoft.com/ja-jp/library/windows/apps/hh700421.aspx<br>には、しっかりとGIFのみと書かれていました。従って、サンプルが駄目ですね。

_ arton (2013-02-09 11:07)

リンク先ありがとうございます。InkManagerのリファレンスからは出力形式が見つけられなかったので何を信じれば良いのか迷っていたのです。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え