0

Telerik RadRichTextBox があります。設計はこちら

<telerik:RadRichTextBox Name="radRchTxtBoxEdit" HorizontalAlignment="Stretch"  
VerticalAlignment="Top" BorderBrush="Black" BorderThickness="1" Background="White"
LayoutMode="Flow" IsSpellCheckingEnabled="False" TextInput="radRchTxtBoxEdit_TextInput"> 

リッチ テキスト ボックスのコンテンツのスナップショットが必要です。RichTextBox のスナップショットを取得する方法はありますか?

4

2 に答える 2

0

PrintDocumentクラスを使用すると、任意のUIElementまたはControlを取得(スナップショット/印刷)できます。PrintDocumentを宣言し、RadRichTextBoxをPrintPageイベントのPageVisualに割り当てます(つまり、PrintPage = radRchTxtBoxEdit)。

ここにあなたが始めるためのリンクがあります。

http://msdn.microsoft.com/en-us/library/system.windows.printing.printdocument%28v=vs.95%29.aspx

于 2012-08-01T15:06:29.010 に答える
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 pageVisual Tree、 RadRichTextBox コントロールをドリルダウンして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 コントロールのソースとして直接使用できますが、このオブジェクトをファイル システム オブジェクトに変換するネイティブな方法はありませんが、いくつかのオプションがあります。

  1. 生のピクセル データを Web サービスに送信し、そこで保存することができます。(WriteableBitmap.Pixels)
  2. 他の画像形式に保存する方法については、この回答を確認してください

...

そして、完全な答えのために: ここにいくつかの XAML があります(Telerik から直接)。

<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);
    }
}
于 2012-08-02T20:37:15.520 に答える