在 WPF Datagrid 行中仅显示图像的一部分?
Show only a section of an image in WPF Datagrid rows?
我有尺寸为 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,而不缩小图像?
我能想到的唯一方法是从位图图像创建一个新的位图,但我敢肯定,如果有数百张图像,那将是非常低效的。
我会尝试将您的图像控件包装在 ClipToBounds=true 的网格中。那应该解决它。只需确保网格的大小适合 item(50 像素高),而不是根据图像自动调整大小,否则剪裁将无法如您所愿。
我有尺寸为 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,而不缩小图像?
我能想到的唯一方法是从位图图像创建一个新的位图,但我敢肯定,如果有数百张图像,那将是非常低效的。
我会尝试将您的图像控件包装在 ClipToBounds=true 的网格中。那应该解决它。只需确保网格的大小适合 item(50 像素高),而不是根据图像自动调整大小,否则剪裁将无法如您所愿。