在WPF Datagrid行中仅显示图像的一部分?

时间:2015-07-18 03:24:25

标签: c# wpf image datagrid bitmapimage

我的图像(在本地驱动器上)尺寸为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而不缩小图像?

我能想到的唯一方法就是从位图图像创建一个新的位图,但我非常确定数百张图像真的效率低下。

1 个答案:

答案 0 :(得分:1)

我尝试使用ClipToBounds = true将图像控件包装在Grid中。那应该解决它。只需确保网格大小为项目(50px高),并且不会从图像中自动调整大小,否则裁剪将无法正常工作。