发信人: wusi()
整理人: windfire(2000-12-05 18:36:43), 站内信件
|
【 在 robin007 (知更鸟) 的大作中提到: 】
void RefreshPalette(Graphics::TBitmap *d,Graphics::TBitmap *s,TColor * RGBColor,unsigned int TotalColors)
{
int W,H;
Byte *sour,*dest;
LOGPALETTE *lp;
HGLOBAL hpal=GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,sizeof(LOGPAL ETTE)+TotalColors*sizeof(PALETTEENTRY));
lp=(LOGPALETTE *)GlobalLock(hpal);
lp->palVersion=0x300;
lp->palNumEntries=(Word)TotalColors;
for(unsigned int i=0;i<TotalColors;i++) {
lp->palPalEntry[i].peFlags=NULL;
lp->palPalEntry[i].peRed= GetRValue(RGBColor[i]);
lp->palPalEntry[i].peGreen=GetGValue(RGBColor[i]);
lp->palPalEntry[i].peBlue= GetBValue(RGBColor[i]);
}
d->ReleasePalette(); // release the previous palette
d->Palette=CreatePalette(lp);
GlobalUnlock(hpal);
GlobalFree(hpal);
if(TotalColors==256) {
W=s->Width;
H=s->Height;
}
else {
W=(s->Width+1)/2;
H=s->Height;
}
for (int y = 0; y < H; y++)
{
dest =(Byte *) d->ScanLine[y];
sour =(Byte *) s->ScanLine[y];
for (int x = 0; x <W; x++)
dest[x] = sour[x];
}
}
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.38.198.85]
|
|