问题来源:
在usercontrol中,我要根据图片的颜色来设置usercontrol的透明,以实现不规则形状控件。
但是在调用GetBitmapBits之前,给数组分配大小的时候,发现很奇怪的现象。如下所述:图片是24位色彩的图片。
给数组分配大小的时候,按道理,应该是 :
ReDim bmBytes(0 To bm.bmWidthBytes - 1, 0 To bm.bmHeight - 1)
但是使用上面的代码分配大小,获得区域都是扭曲的,逐行向右偏移。比如,原图是正方形,取得的区域却变成菱形。但是我这样分配大小:
ReDim bmBytes(0 To bm.bmWidthBytes - 3, 0 To bm.bmHeight - 1) '设置接收bitmap数据的数组大小
就能够取得正确的区域。下面是调用GetBitmapBits:
GetBitmapBits m_HMaskBm, bm.bmWidthBytes * bm.bmHeight, bmBytes(0, 0)注:bm.bmWidthBytes = 2268 / bm.bmWidth = 755请哪位知道原因请多多指教。