这是我的一些位掩码(单色位图)。 Bitmask_Create()函数没有问题。 我已经testing了打开,加载和保存窗口单色位图,它工作的很好。 但是,我所做的GetPixel和SetPixel函数似乎并不正确。 在某些情况下,他们似乎工作正常取决于位图维度。
如果有人可以帮忙,我将不胜感激。 这让我疯狂。 谢谢。
typedef struct _GL_BITMASK GL_BITMASK; struct _GL_BITMASK { int nWidth; // Width in pixels int nHeight; // Height in pixels int nPitch; // Width of scanline in bytes (may have extra padding to align to DWORD) BYTE *pData; // Pointer to the first byte of the first scanline (top down) }; int BitMask_GetPixel(GL_BITMASK *pBitMask,int x,int y) { INT nElement = ((y * pBitMask->nPitch) + (x / 8)); PBYTE pElement = pBitMask->pData + nElement; BYTE bMask = 1 << (7 - (x % 8)); return *pElement & bMask; } void BitMask_SetPixel(GL_BITMASK *pBitMask,int y,int nPixelColor) { INT nElement = x / 8; INT nScanLineOffset = y * pBitMask->nPitch; PBYTE pElement = pBitMask->pData + nScanLineOffset + nElement; BYTE bMask = 1 << (7 - (x % 8)); if(*pElement & bMask) { if(!nPixelColor) return; else *pElement ^= bMask; } else { if(nPixelColor) return; else *pElement |= bMask; } } GL_BITMASK *BitMask_Create(INT nWidth,INT nHeight) { GL_BITMASK *pBitMask; int nPitch; nPitch = ((nWidth / 8) + 3) & ~3; pBitMask = (GL_BITMASK *)GlobalAlloc(GMEM_FIXED,(nPitch * nHeight) + sizeof(GL_BITMASK)); if(!pBitMask) return (GL_BITMASK *)NULL; pBitMask->nPitch = nPitch; pBitMask->nWidth = nWidth; pBitMask->nHeight = nHeight; pBitMask->pData = (PBYTE)pBitMask + sizeof(GL_BITMASK); return pBitMask; }
.NET Bitmap.Load方法在不同的计算机上产生不同的结果
如何直接在Windows中分配video卡内存?
如何使用GDI即时创build带有Alpha通道的位图?
Windows成像组件 – Direct2D C ++ – 绘图,保存
移动语义和窗口句柄。 DeleteObject安全处理?
DirectShow – 获取video帧
使用GDI显示图像的红色通道
我认为你计算球场的公式只是一点点。 它在宽度是8的倍数的情况下起作用,但是否则不起作用。 尝试:
nPitch = ((nWidth + 31) / 8) & ~3;
我想通了…我有两个测试向后的nPixelColor SetPixel()
if(*pElement & bMask) { if(nPixelColor) return; // this was !nPixelColor else *pElement ^= bMask; } else { if(!nPixelColor) return; // this was nPixelColor else *pElement |= bMask; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。