从HBITMAP中删除边框

时间:2012-04-20 09:42:27

标签: c++ bitmap

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

1 个答案:

答案 0 :(得分:1)

如果您知道边框的尺寸,则可以通过创建带有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);

这会将src位图与r一起裁剪,并将副本放入result