Xaml,WPF图像位置和裁剪问题

4
我有600像素宽和600像素高的图像。我们有三种大小的圆形,所有圆心都在中间。其中一些下面有反射作为阴影。我想为显示目的裁剪图片。 largest circle 如上所示,最大的圆直径约为500像素,但中等和小型圆的直径较小。我知道代码中Product对象类型的大小。由于大小差异,我必须以不同的方式放置它们,并使用了三个占位符图像,如下所示:
<Image x:Name="imgCoinHolderSmall"      
       HorizontalAlignment="Center" 
       Margin="0,495,0,0" 
       VerticalAlignment="Top" 
       Stretch="Fill" 
       Width="200" 
       Height="200"/>
<Image x:Name="imgCoinHolderMedium"     
       HorizontalAlignment="Center" 
       Margin="0,510,0,0" 
       VerticalAlignment="Top" 
       Stretch="Fill" 
       Width="200" 
       Height="200"/>
<Image x:Name="imgCoinHolderLarge"      
       HorizontalAlignment="Center" 
       Margin="0,520,0,0" 
       VerticalAlignment="Top" 
       Stretch="Fill" 
       Width="200" 
       Height="200"/>

那么我能否更改图像的属性,使其不显示此屏幕截图的红色部分: enter image description here 顺便说一下,我不会以它们的原始大小显示图像(正如您可以在xaml代码中看到的那样),我将宽度设置为200。这只是一个显示问题,我不必存储新图像。我希望在运行时完成它,最好通过在xaml中设置图像属性来实现。(对于三种圆的所有尺寸)
使用CroppedBitmap是最好的方法吗? http://msdn.microsoft.com/en-us/library/ms752345.aspx 顺便说一句,这是针对Windows RT的。
1个回答

11

一种选择是使用裁剪掩码

<Image Source="MyImage.jpg">
    <Image.Clip>
        <RectangleGeometry Rect="10,10,80,80"></RectangleGeometry>
    </Image.Clip>
</Image>

rect结构体需要设置X、Y、宽度和高度等值,这些值根据您的图像设置而定。


谢谢,这正是我在寻找的。croppedbitmap 在 Windows RT 上不可用。 - JP Hellemons
我对XAML和WPF还比较新,你能给我一些指针来选择矩形的好值吗?我应该使用Blend吗? - JP Hellemons
我编辑了我的答案,你需要进行一些计算才能得到矩形的正确值。请记住,在WPF中,0,0点是左上角。 - Gerrit Fölster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接