我有Telerik RadRichTextBox。这是设计
<telerik:RadRichTextBox Name="radRchTxtBoxEdit" HorizontalAlignment="Stretch"
VerticalAlignment="Top" BorderBrush="Black" BorderThickness="1" Background="White"
LayoutMode="Flow" IsSpellCheckingEnabled="False" TextInput="radRchTxtBoxEdit_TextInput">
我想要Rich Text Box内容的快照。有没有办法拍摄RichTextBox的快照?
答案 0 :(得分:0)
使用PrintDocument类可以拍摄(快照/打印)任何UIElement或Control。声明PrintDocument,将RadRichTextBox分配给PrintPage Event中的PageVisual。(即e.PrintPage = radRchTxtBoxEdit)。
以下是帮助您入门的链接。
http://msdn.microsoft.com/en-us/library/system.windows.printing.printdocument%28v=vs.95%29.aspx
答案 1 :(得分:0)
假设您要将文档另存为图像,然后对其执行某些操作。以下应该有效。
您可以使用以下命令从任何UIElement生成位图:
WriteableBitmap GetImageForUIElement(UIElement source)
{
WriteableBitmap bmp = new WriteableBitmap(source, null);
bmp.Invalidate();
return bmp;
}
只有feeding your RadRichTextBox
对此方法的控制才能满足,因为它will just create an image of the visible area
。
To generate the whole page
,您必须深入研究RadRichTextBox控件的Visual Tree
才能找到DocumentPagePresenter
这有助于找到正确的子控件:
T GetDescendent<T>(DependencyObject root) where T : DependencyObject
{
int children = VisualTreeHelper.GetChildrenCount(root);
for (int i = 0; i < children; i++)
{
var element = VisualTreeHelper.GetChild(root, i);
if (element is T)
{
return (T)element;
}
else
{
element = GetDescendent<T>(element);
if (element != null)
{
return (T)element;
}
}
}
return null;
}
WritableBitmap可以直接用作Image控件的Source, 但是没有本地方法将此对象转换为文件系统对象,但是有一些选项。
...
为了得到完整答案: 这是查看(Straight from Telerik)
的一些XAML<telerik:RadRichTextBox x:Name="MyRichTextBox" >
<telerik:RadDocument LayoutMode="Paged">
<telerik:Section PageMargin="10, 10, 10, 10">
<telerik:Paragraph>
<telerik:ImageInline Width="236" Height="50" UriSource="/Silverlight.Help.RadRichTextBoxSamples;component/Demos/Images/RadRichTextBox.png" />
</telerik:Paragraph>
<telerik:Paragraph TextAlignment="Center">
<telerik:Span Text="Thank you for choosing Telerik" />
<telerik:Span FontWeight="Bold" Text=" RadRichTextBox!" />
</telerik:Paragraph>
<telerik:Paragraph>
<telerik:Span FontWeight="Bold" Text="RadRichTextBox" />
<telerik:Span Text=" is a control that is able to display and edit rich-text content including formatted text arranged in pages, paragraphs, spans (runs) etc." />
</telerik:Paragraph>
<telerik:Table LayoutMode="AutoFit">
<telerik:TableRow>
<telerik:TableCell>
<telerik:Paragraph>
<telerik:Span Text="Cell 1" />
</telerik:Paragraph>
</telerik:TableCell>
<telerik:TableCell>
<telerik:Paragraph>
<telerik:Span Text="Cell 2" />
</telerik:Paragraph>
</telerik:TableCell>
</telerik:TableRow>
<telerik:TableRow>
<telerik:TableCell ColumnSpan="2">
<telerik:Paragraph>
<telerik:Span Text="Cell 3" />
</telerik:Paragraph>
</telerik:TableCell>
</telerik:TableRow>
</telerik:Table>
</telerik:Section>
</telerik:RadDocument>
</telerik:RadRichTextBox>
<Image x:Name="MyRichTextImage" />
<Button HorizontalAlignment="Right" VerticalAlignment="Bottom" Content="Click" Click="Button_Click" />
这是按钮点击处理程序
private void Button_Click(object sender, RoutedEventArgs e)
{
DocumentPagePresenter doc = GetDescendent<DocumentPagePresenter>(MyRichTextBox);
if (doc != null)
{
MyRichTextImage.Source = GetImageForUIElement(doc);
}
}