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

作屋

我有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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章