2012-04-20 117 views
0

我有一個使用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

回答

1

如果你知道的邊框尺寸,您可以通過應用新的邊界框創建與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