如何获取已在 UWP 中的 RichEditBox 中的图像



我在 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[sS]+?[rn](?<imagedata>[sS]+)[rn]}\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的库,你可以引用一些图像转换相对的代码片段。

如果您在编写转换器时遇到问题,您可以询问新线程以及您所做的详细信息。

相关内容

  • 没有找到相关文章

最新更新