オートシェイプを SDL で読み込む

http://d.hatena.ne.jp/n7shi/20090520/1242814442
こちらのコードを眺めていて気づいたんです。オブジェクトが MemoryStream だったら SDL で表示できるんじゃね?、と。


というわけでやってみました。やってみましたが上手くいきませんでした。


pp01_02.zip


pp01_02.png
Office のほうでコピーして、pp01 のほうで 左 Ctrl + V すると貼り付けられます。


上手くいっているように見えますが、参照元id:n7shi さんのほうの

        var ms = Clipboard.GetData("Office Drawing Shape Format") as MemoryStream;

これが何故か null になるというマジック。


なんとかならんのかとググった結果、以下のように PNG で取ってきたら取れたわけですがよく分からん。

        IDataObject data = Clipboard.GetDataObject();

        // クリップボードにあるデータがPNG形式か調べる
        if (data.GetDataPresent("PNG"))
        {
            // PNG形式でデータをMemoryStreamとして取得する
            MemoryStream ms = (MemoryStream)data.GetData("PNG");
            return ms;
        }

奥が深いぜクリップボード