[英]How to get the image already inside a RichEditBox in UWP
我在UWP中有一個RichEditBox
,其中已插入一個圖像。 插入圖像時,圖像具有一定的寬度和高度(以像素為單位)。 現在,在插入圖像之后,我想選擇圖像並編輯尺寸。 有什么辦法可以做到這一點?
另外,我看到了一個類似的線程,其答案不正確。 請記住,這是針對WINRT(UWP)的。
我想選擇圖像並編輯尺寸
首先,您需要從RichEditBox
獲取選定的圖像RTF
文本。 為此,應使用ITextDocument
的Selection
屬性。例如:
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.