Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在RichTextBox WPF中添加图像_C#_Wpf_Richtextbox - Fatal编程技术网

C# 在RichTextBox WPF中添加图像

C# 在RichTextBox WPF中添加图像,c#,wpf,richtextbox,C#,Wpf,Richtextbox,我试图根据列表框项目的选择在RichTextBox中添加静态图像。我能够实现加载图像的功能,但图像没有占据RichTextBox的整个大小。我查看了MSDN文档中可以设置的任何属性,但找不到任何适合我需要的属性 我发布了一个示例代码片段,用于将图像添加到RichTextBox <Window x:Class="ImageDepth.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation

我试图根据列表框项目的选择在
RichTextBox
中添加静态图像。我能够实现加载图像的功能,但图像没有占据
RichTextBox
的整个大小。我查看了MSDN文档中可以设置的任何属性,但找不到任何适合我需要的属性

我发布了一个示例代码片段,用于将图像添加到
RichTextBox

<Window x:Class="ImageDepth.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <RichTextBox HorizontalAlignment="Center" Height="100" VerticalAlignment="Center" Width="100" BorderBrush="Gray">
        <FlowDocument>
            <BlockUIContainer>
                <Image Source="C:\Temp\Penguins.jpg"/>
            </BlockUIContainer>                
        </FlowDocument>
    </RichTextBox>
</Grid>

我是否遗漏了什么,或者是否有更简单的方法来实现这一点

编辑:我尝试将图像的高度和宽度设置为
RichTextBox
的高度和宽度,但它覆盖了
RichTextBox
的80%。此外,我还必须删除图像的“拉伸”属性,因为即使设置该属性会使图像覆盖约90%的区域,它也会使图像略微扭曲。

尝试以下操作:

<Window x:Class="ImageDepth.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <RichTextBox HorizontalAlignment="Center" Height="100" VerticalAlignment="Center" Width="100" BorderBrush="Gray">
        <FlowDocument>
            <BlockUIContainer>
                <Image Height="100" Width="100" Source="C:\Temp\Penguins.jpg" Stretch="Fill"/>
            </BlockUIContainer>                
        </FlowDocument>
    </RichTextBox>
</Grid>


这将告诉您的图像填充整个
RichTextBox

您必须将图像的
高度和
宽度绑定到RichTextBox的
实际高度和
实际宽度

<Window x:Class="ImageDepth.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <RichTextBox HorizontalAlignment="Center" Height="100" VerticalAlignment="Center" Width="100" BorderBrush="Gray">
        <FlowDocument>
            <BlockUIContainer>
                <Image Source="C:\Temp\Penguins.jpg"/>
            </BlockUIContainer>                
        </FlowDocument>
    </RichTextBox>
</Grid>
<Image Source="C:\Temp\Penguins.jpg"
       Width="{Binding ActualWidth, RelativeSource={RelativeSource
                               Mode=FindAncestor, AncestorType=RichTextBox}}"
       Height="{Binding ActualHeight, RelativeSource={RelativeSource
                             Mode=FindAncestor, AncestorType=RichTextBox}}"/>


更新

RichTextBox似乎有内部填充。您可以将其设置为负值以删除该填充

<RichTexBox Padding="-5,-2,-5,-2"> // It reads Left, Top, Right, Bottom
   ....
</RichTexBox>
//它读左、上、右、下
....

-5、-2、-5、-2更改为适合您的所需值。

您是否应该设置图像的宽度和高度?我尝试添加图像的高度和宽度以匹配RichTextBox的高度和宽度,但它仍然无法填充RichTextBox的整个区域。当然,设置高度和宽度确实会使图像覆盖更大的区域,但不会完全覆盖。这似乎是尝试让图像覆盖RichTextBox的整个区域的最佳方法,但不知怎的,它并没有按照预期工作。即使我将图像的高度和宽度绑定到RichTextBox的实际高度和实际宽度,或者对值进行硬编码,RichTextBox的所有4个面上仍保留一些未填充的空间。RichTextBox似乎有一些内部填充。您可以通过提供负的填充值来克服这一问题。我已经更新了答案。看看这是否对你有帮助。