首页新闻找找看学习计划

win32 画背景色 为什么CreateDIBitmap有时会失败?

0
悬赏园豆:80 [已关闭问题] 关闭于 2020-03-19 21:05

我有一个单色的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))
    }
凹出来的主页 凹出来 | 初学一级 | 园豆:33
提问于:2020-02-07 16:23
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册