我的图像(在本地驱动器上)尺寸为200x275,我使用以下代码在数据网格中填充一行:
XAML:DataGrid.Columns
<DataGridTemplateColumn Header="IMG" Width="SizeToCells">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Width="200" Height="275" Margin="0,0,0,-100" Source="{Binding Path=IMG}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
在我的xaml.cs文件中,我将IMG
作为类型BitmapImage
的属性(将uri存储为BitmapImage)并使用CollectionViewSource更新它,其中包含列的更改对于那些图像。
显示它们很好,但我只想将每个图像的一部分显示为一种预览(相同的宽度为200px,顶部为10px,高度仅为50px - 之后我会完整的单击小预览时显示图像。
从上面的代码中你可以看到我尝试更改边距值(-100到底部) - 哪种有用,但列表中的最后一个图像是完整显示的并且超出了列表的底部。
有没有更好的方法从顶部裁剪10px,然后将高度设置为50px而不缩小图像?
我能想到的唯一方法就是从位图图像创建一个新的位图,但我非常确定数百张图像真的效率低下。
答案 0 :(得分:1)
我尝试使用ClipToBounds = true将图像控件包装在Grid中。那应该解决它。只需确保网格大小为项目(50px高),并且不会从图像中自动调整大小,否则裁剪将无法正常工作。