在WPF数据网格行中仅显示图像的一部分

本文关键字:显示图 显示 图像 一部分 数据 WPF 数据网 网格 | 更新日期: 2023-09-27 18:03:14

我有图像(在本地驱动器上),尺寸为200x275,我在我的数据网格中填充一行,使用以下代码:

XAML: DataGrid。列

<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而不缩小图像?

我能想到的唯一方法就是从位图图像中创建一个新的位图,但我很确定这对于数百张图像来说真的很低效。

在WPF数据网格行中仅显示图像的一部分

我会尝试用ClipToBounds=true在网格中包装您的图像控件。这应该能解决问题。只要确保网格的大小与 (50px高)一致,而不是根据图像自动调整大小,否则剪辑就不会像你期望的那样工作。