我有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对其进行更新,更改后的列表包括这些图像的列。
显示它们很好,但我只想显示每个图像的一部分作为一种预览(相同的宽度200像素,顶部10像素,高度仅50像素-稍后,当尺寸较小时,我将显示完整的图像点击预览)。
从上面的代码中,您可以看到我尝试更改Margin值(从100到底部)-有点用,但是列表中的最后一个图像显示为完整,并超过了列表的底部。
是否有更好的方法从顶部裁剪10像素,然后将高度设置为50像素而不缩小图像?
我能想到的唯一方法是根据位图图像创建一个新的位图,但我很确定这对于数百张图像而言确实效率不高。
我会尝试将您的Image控件包装在ClipToBounds = true的网格中。那应该解决它。只需确保将网格调整为适合项目的大小(高50像素),并且不能根据图像自动调整大小,否则裁剪将无法按预期工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句