从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
及复印件放入:
如果你知道的边框尺寸,您可以通过应用新的边界框创建与clone
副本裁剪位图result
。
除了代码看起来像C#/。NET。我正在使用C++(如标签中所述)(没有.NET) – Jonnster 2012-04-20 13:15:27
是的,你是对的。我做了一个编辑,以供参考:[Bitmap :: Clone Method(Rectangle,PixelFormat)](http://msdn.microsoft.com/de-de/library/ms141944.aspx#Y0) – 2012-04-20 13:18:54
它仍然在使用。 NET虽然。而对于记录来说,不会裁剪位图的左侧和顶部,因为它始终将左侧和顶部设置为0,0)。它实际上会裁剪右边和底部。 – Jonnster 2012-04-20 13:30:17
听起来像一个XY问题。首先处理X,检查如果将不同的大小传递给CopyPicture会发生什么情况。 – 2012-04-20 11:53:33
它没有什么区别我的尺寸我传递到copypicture – Jonnster 2012-04-20 13:14:49