从 HBITMAP 中删除边框

Removing Border From HBITMAP

本文关键字:边框 删除 HBITMAP      更新时间:2023-10-16

我有一个HBITMAP,它是使用Excel Interop的CopyPicture方法创建的。出于某种原因,这会在图像的顶部和左侧边缘放置灰色边框,即使它们不是电子表格的一部分。有人可以告诉我一种从图像中删除这些边框的简单方法。我想到的方法是获取字节数组中的位,从该字节数组中删除第一行和第一列,然后将数组转换回位图。有没有更简单或更好的方法?喜欢一个简单的修剪功能?

如果您知道边框的尺寸,则可以通过创建应用了新边界框的clone的副本来裁剪位图:

int croppedWidth = x;
int croppedHeight = y;
Rectangle r = Rectangle(0, 0, croppedWidth, croppedHeight);
System::Drawing::Imaging::PixelFormat format = src->PixelFormat;
Bitmap^ result = src->Clone(r, format);

这会使用 r 裁剪src位图,并将副本放入 result 中。