从HBITMAP中删除边框

问题描述:

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

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及复印件放入:

+0

听起来像一个XY问题。首先处理X,检查如果将不同的大小传递给CopyPicture会发生什么情况。 – 2012-04-20 11:53:33

+0

它没有什么区别我的尺寸我传递到copypicture – Jonnster 2012-04-20 13:14:49

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

+0

除了代码看起来像C#/。NET。我正在使用C++(如标签中所述)(没有.NET) – Jonnster 2012-04-20 13:15:27

+0

是的,你是对的。我做了一个编辑,以供参考:[Bitmap :: Clone Method(Rectangle,PixelFormat)](http://msdn.microsoft.com/de-de/library/ms141944.aspx#Y0) – 2012-04-20 13:18:54

+0

它仍然在使用。 NET虽然。而对于记录来说,不会裁剪位图的左侧和顶部,因为它始终将左侧和顶部设置为0,0)。它实际上会裁剪右边和底部。 – Jonnster 2012-04-20 13:30:17