簡體   English   中英

如何在UWP中的RichEditBox中獲取圖像

[英]How to get the image already inside a RichEditBox in UWP

我在UWP中有一個RichEditBox ,其中已插入一個圖像。 插入圖像時,圖像具有一定的寬度和高度(以像素為單位)。 現在,在插入圖像之后,我想選擇圖像並編輯尺寸。 有什么辦法可以做到這一點?

另外,我看到了一個類似的線程,其答案不正確。 請記住,這是針對WINRT(UWP)的。

如何從RichEditBox獲取圖像

我想選擇圖像並編輯尺寸

首先,您需要從RichEditBox獲取選定的圖像RTF文本。 為此,應使用ITextDocumentSelection屬性。例如:

Richbox.Document.Selection.GetText(TextGetOptions.FormatRtf, out rtf); 

其次,在獲得圖像RTF文本后,您需要編寫一個轉換器以將RTF轉換為圖像。 RTF規范中的圖片\\pict控制字開頭,並且可以采用十六進制(默認)或二進制格式。 十六進制或二進制格式的圖片跟隨圖片目標控制字。 這樣您的轉換器可以遵循此規則以使用正則表達式提取圖像。

對於您鏈接的該線程 ,盡管它不是專門針對UWP應用的,但它告訴您從RTF提取圖像的方法,您仍然可以參考。 我使用@kmote代碼段進行了一些更改以進行簡單測試,並且可以正常工作。 測試代碼段如下:

string rtf = "";
Richbox.Document.Selection.GetText(TextGetOptions.FormatRtf, out rtf); 
string imageDataHex = "";
var r = new Regex(@"pict[\s\S]+?[\r\n](?<imagedata>[\s\S]+)[\r\n]\}\\par", RegexOptions.None);
var m = r.Match(rtf);
if (m.Success)
{
    imageDataHex = (m.Groups["imagedata"].Value;
}  
byte[] imageBuffer = ToBinary(imageDataHex);
StorageFile tempfile = await ApplicationData.Current.LocalFolder.CreateFileAsync("temppic.jpg");
await FileIO.WriteBufferAsync(tempfile, imageBuffer.AsBuffer());

但是所有答案都只是一個指南,您可能需要編寫自己的完美庫。 有一個第三方軟件包RtfPipe提供了一個用於將RTF轉換為HTML的庫,您可以參考一些圖像轉換的相關代碼段。

如果在編寫轉換器時遇到問題,則可以詢問新線程,並提供完成的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM