1. 程式人生 > >WPF RICHTEXTBOX 和資料庫讀寫圖文的方法

WPF RICHTEXTBOX 和資料庫讀寫圖文的方法

做一個專案,需要圖文一起存入資料庫,在網上瀏覽了很久。終於實現了在RICHTEXTBOX裡面和資料庫讀寫圖文的方法。

存入資料庫。

  public string toxaml()
        {
           // Stream s = new MemoryStream();  // 其他的什麼Stream型別都沒問題
           //// XamlWriter.Save(
            MemoryStream s=new MemoryStream();
            TextRange documentTextRange = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
            documentTextRange.Save(s, DataFormats.XamlPackage);
          return Convert.ToBase64String(s.ToArray());
            //return Convert.ToString(s.ToArray());

        }

然後存入資料庫。

注意不能用//return Convert.ToString(s.ToArray());不知道什麼原因。用這句存入資料庫是SYSTEM..BYTE[] ?

讀取資料庫

TextRange tr = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
            ////convert string to MemoryStream 
            //MemoryStream ms = GetMemoryStreamFromString(buffer);
            //tr.Load(ms, DataFormats.XamlPackage); 
            MemoryStream s = new MemoryStream((Convert.FromBase64String(buffer)));
            //   XmlReader xr = XmlReader.Create(s);
            //FlowDocument fd = XamlReader.Load(xr) as FlowDocument;
            //this.richTextBox1.Document = fd;
            TextRange TR = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
            TR.Load(s, DataFormats.XamlPackage);

Xaml檔案有兩種,一種是儲存圖片的地址的Xaml,另外一種是直接儲存圖片的XamlPackage。使用直接儲存圖片的模式,這樣圖片是以二進位制的形式存在Xaml檔案中的,讀取後就不會有問題了。另外讀取時使用的是TextRange.Load,格式選擇就是XamlPackage。讀取Xaml也沒有問題,還可以讀Rtf和Text檔案。XamlReader不適合用來讀取FlowDocument的內容。