我有一个单色的rgba的像素数组,其实就是背景色啦,想在wm_paint里画上去,然后CreateDIBitmap就有时会创建失败,左右拉窗口或者上下拉失败的概率更小,像右下同时改变宽高失败概率会变大,不知道这是为什么?
不要说用别的办法画背景,因为我这个只是简化的表述。
代码如下:
pt := win32.PAINTSTRUCT{} hdc := win32.BeginPaint(hWnd, &pt) src := getBg(pt) bHead := win32.BITMAPV5HEADER{ BiWidth: src.Bounds().Width, BiHeight: src.Bounds().Height * -1, BiPlanes: 1, BiBitCount: 32, BiXPelsPerMeter: 3780, BiYPelsPerMeter: 3780, BiCompression: win32.BI_RGB, }, }, } bHead.BiSize = sizeof(bHead) bInfo := win32.BITMAPINFO{ BmiHeader: bHead.BITMAPINFOHEADER, } bmp := win32.CreateDIBitmap(hdc, &bHead, win32.CBM_INIT, &src.Pix[0], &bInfo, win32.DIB_RGB_COLORS) if bmp != 0 { memDc := win32.CreateCompatibleDC(hdc) old := win32.SelectObject(memDc, win32.HGDIOBJ(bmp)) win32.BitBlt(hdc, xDst, yDst, width, height, memDc, xSrc, ySrc, win32.SRCCOPY) win32.SelectObject(memDc, old) win32.DeleteDC(memDc) win32.DeleteObject(win32.HGDIOBJ(bmp)) }