有关调色板相关信息

1- 创建一个调色板:
          PALETTEENTRY          palette[256];          // color palette
          创建一个备份调色板
          PALETTEENTRY         save_palette[256];
          即调色板即是一个基于256个PALETTEENTRY项的数组,每一项是一种颜色(由r,g,b组成)P大师技巧206
          P207有填充调色板的技巧,如何填充取决于你,(0,0,0)白,(255,255,255)黑

2- 创建一个(随机)调色板接口    //因为使用了DDPCAPS_INITIALIZE参数,是为了关联这个调色板到一个主显示表面
        LPDIRECTDRAWPALETTE lpddpal = NULL;
       if(FAILED(lpdd->CreatePalette(DDPCAPS_8BIT|DDPCAPS_ALLOW256|DDPCAPS_INITIALIZE,
               palette,&lpddpal,null)))
       {}
      现在 lpddpal即是调色板接口了(但是这个接口用什么用呢why)
      在上步中 如果palette之前自己未做填充,则DDPCAPS_INITIALIZE表示要让系统初始该调色板
      如果之前调色板自己填充了,则不要写入该标志

3- 关联一个调色板到一显示表面
        要用到主显示表面的接口与调色板的接口
       if(lpddsprimary->SetPalette(lpddpal)) //两个红色,一个是主显示面接口,一个是调色板接口

4-调色板总是关联到主显表面 即使有后备表面的存在,因为最终在显示器下显示时才用到调色板中的数据,而此时只与已经经过flip,只与主显表面有关了

5-关联一位图身身带的调色板到一显示表面或是ddraw
// create the palette object,得到一lpddpal接口,并与主显示表面关联
if (FAILED(lpdd->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 |
                                DDPCAPS_INITIALIZE,
                                palette,&lpddpal, NULL)))
return(0);// load the 8-bit image//此时位图已存入bitmap结构体中
if (!Load_Bitmap_File(&bitmap,"alley8.bmp"))
   return(0);

// load it's palette into directdraw 更新调色板为位图自身的调色板
if (FAILED(lpddpal->SetEntries(0,0,MAX_COLORS_PALETTE,bitmap.palette)))
   return(0);

你可能感兴趣的:(object,File,null,colors)