15,978
社区成员
发帖
与我相关
我的任务
分享 // 返回颜色表项数
int nColors = GetDeviceCaps(hDC(),SIZEPALETTE);
if (! nColors)
nColors = GetDeviceCaps(hDC,NUMCOLORS);
// 定义句柄,并分配空间
HANDLE hLogPal = GlobalAlloc(GHND,sizeof(LOGPALETTE) + nColors * sizeof(PALETTEENTRY));
if (! hLogPal)
return NULL;
// 句柄和调色板表项结构指针建立联系
LPLOGPALETTE lpLogPal = (LPLOGPALETTE)GlobalLock(hLogPal);
// 初始化调色板表项结构
lpLogPal->palVersion = 0x300;
lpLogPal->palNumEntries = (WORD)nColors;
GetSystemPaletteEntries(hDC,0,nColors,(LPPALETTEENTRY)(lpLogPal->palPalEntry));
// 定义调色板句柄,根据调色板表项创建调色板
HPALETTE hPal1 = CreatePalette(lpLogPal);
if (hPal1)
{
hDC = ::GetDC(NULL);
hOldPal=SelectPalette(hDC,hPal1,FALSE);
AnimatePalette(hPal1, 0, nColors, (LPPALETTEENTRY)(lpLogPal->palPalEntry));
RealizePalette(hDC);
}
// 获取该调色板下新的像素值
GetDIBits(hDC,hBitmap,0,(UINT)Bitmap.bmHeight,(LPSTR)lpbi+sizeof(BITMAPINFOHEADER)+dwPaletteSize, (BITMAPINFO *)lpbi,DIB_RGB_COLORS);
//保存图片、释放资源


这个是暴利摩托的截图。不是dx的问题,是256色的问题。你可以把自己电脑显示调成256色,然后用QQ截图试试。也是花屏。电脑调成256色:桌面--右击属性--设置--高级--适配器--列出所有模式。