我正在尝试在Image
控件中显示Image的固定部分。源是来自磁盘或Web资源的BitmapImage
,并且是异步加载的。
我尝试使用CroppedImage
<UserControl.Resources>
<CroppedBitmap x:Key="croppedImage" Source="{Binding Image}" SourceRect="20 46 273 202"/>
</UserControl.Resources>
...
<Image x:Name="TemplateImage" Height="202" Width="273" HorizontalAlignment="Left" Source="{StaticResource croppedImage}"/>
尝试创建
XamlParseException
时会生成一个CroppedBitmap
。我也在(C#)后面的代码中尝试过
new CroppedBitmap(Image, new System.Windows.Int32Rect(20, 46, 273, 202))
从网络资源加载时给我一个
ArgumentException
,说明该值超出了预期范围。我想这是由于图像尚未加载,因此没有大小。有没有一种方法(不必使用
CroppedImage
)来完成此操作,而不必预加载图像?顺便说一句:将
BitmapImage
作为源直接提供给Image
控件可以正常工作,但是当然不能进行裁剪。 最佳答案
可以使用带有ImageBrush Fill的Rectangle来代替Image控件,并根据需要设置Viewbox:
<UserControl.Resources>
<ImageBrush x:Key="croppedImage" ImageSource="{Binding Image}"
ViewboxUnits="Absolute" Viewbox="20,46,273,202"/>
</UserControl.Resources>
...
<Rectangle Height="202" Width="273" Fill="{StaticResource croppedImage}"/>