none
RichTextBoxに画像を貼り付けて保存すると画像が保存されない RRS feed

  • 質問

  • Visual Studio 2019を使用して Windowsフォームアプリケーション(C#)を作成しています。

    RichTextBoxを使用して、このRichTextBoxに張り付けた画像をrtfファイルに保存したいのでが、画像だけ保存されません。
    入力したテキストは、フォント、文字色など変更したものも保存されるのですが、張り付けた画像は保存してみるとファイルからは消えています。
    何か設定とかあるのでしょうか?
    保存している部分のソースを貼っておきます。

    private void toolStripButton4_Click(object sender, EventArgs e)
    {
      saveFileDialog1.Filter = "リッチテキスト(*.rtf)|*.rtf|" + "All files(*.*)|*.*";
      if (saveFileDialog1.ShowDialog() != DialogResult.OK)
      {
        return;
      }
      string fname = saveFileDialog1.FileName;
      //リッチテキストボックスの中身をリッチテキスト形式で保存する
      richTextBox1.SaveFile(fname, RichTextBoxStreamType.RichText);
    }

    2020年8月5日 0:48

回答

  • とりあえず、Windows 10 1909で下記の手順を行いましたが、SaveFileで保存されたRTFに画像バイナリ(のRTF表現)が含まれ、LoadFileで復元できましたね。

    保存されないというのは、どこからどのようにしてリッチテキストボックスに追加されたものでしょうか。

    1. MS Paintで、キャンバスサイズを32x32にして、赤で塗りつぶし、Ctrl+A, Ctrl+Cで画像全体をクリップボードにコピーする。
    2. リッチテキストボックスにCtrl+Vで上記画像をペーストする。赤い正方形がリッチテキストボックスに表示される。
    3. SaveFileし、保存したRTFを確認する。RTF内に画像データ(と思しきデータ)が含まれている。
    4. 一旦リッチテキストボックスの内容を全消去し、同RTFをLoadFileする。赤い正方形がリッチテキストボックスに表示される。
    • 回答としてマーク Arimaonsen 2020年8月5日 3:13
    2020年8月5日 2:21

すべての返信

  • とりあえず、Windows 10 1909で下記の手順を行いましたが、SaveFileで保存されたRTFに画像バイナリ(のRTF表現)が含まれ、LoadFileで復元できましたね。

    保存されないというのは、どこからどのようにしてリッチテキストボックスに追加されたものでしょうか。

    1. MS Paintで、キャンバスサイズを32x32にして、赤で塗りつぶし、Ctrl+A, Ctrl+Cで画像全体をクリップボードにコピーする。
    2. リッチテキストボックスにCtrl+Vで上記画像をペーストする。赤い正方形がリッチテキストボックスに表示される。
    3. SaveFileし、保存したRTFを確認する。RTF内に画像データ(と思しきデータ)が含まれている。
    4. 一旦リッチテキストボックスの内容を全消去し、同RTFをLoadFileする。赤い正方形がリッチテキストボックスに表示される。
    • 回答としてマーク Arimaonsen 2020年8月5日 3:13
    2020年8月5日 2:21
  • Hongliangさま

    ご検証、ありがとうございます。

    自分でも同じことをすると、確かに保存ができました。

    自分の質問した時の現象を検証しますと、Excelファイルから部分的にセルのいくつかを選択し、

    図としてコピーを選択、形式をピクチャとして、それをRichTextBoxに貼り付けて

    おりました。

    こうすると、RichTextBoxを保存すると画像が保存されないようです。

    同じ様にEXCELファイルから図としてコピーを選択し、形式をビットマップとして、

    これをRichTextBoxに貼り付けるとちゃんと画像も保存されるようです。

    何故、このようになるのか、理解ができていませんが、RichTextBoxの保存自体は

    どうやら正しい動きをしているようですので、解決とさせていただきます。

    大変、ありがとうございました。

    2020年8月5日 3:12