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似乎有一些内部填充。您可以通过提供负的填充值来克服这一问题。我已经更新了答案。看看这是否对你有帮助。