您的当前位置:首页λ?

λ?

2022-04-22 来源:乌哈旅游


位图

我认为你必须对每种情况作出不同的处理,256色可以通过调色板来改

变某一颜色,但在 真彩系统中必须重绘图中的相应的点才可以。(位图是

真彩色的)

#define DSPDxax 0x00E20746

void CSJSizeBar::SwapBitmapColor(CDC* pDC, Cbitmap* pBitmap,

COLORREF rgbNew, COLORREF rgbOld)

{

BITMAP bm;

Cbitmap bmMask;

CDC memDC,maskDC;

// create memory dc for drawing

memDC.CreateCompatibleDC( pDC );

Cpalette* pOldPalette = (Cpalette*)memDC.SelectPalette(

pDC->GetCurrentPalette(),FALSE );

memDC.RealizePalette();

Cbitmap* Bitmap = memDC.SelectObject( pBitmap );

// fill out bitmap structure

pBitmap->GetBitmap( &bm );

// create mask

bmMask.CreateBitmap( bm.bmWidth,bm.bmHeight,1,1,NULL );

maskDC.CreateCompatibleDC( &memDC );

Cbitmap* bmOld = maskDC.SelectObject( &bmMask );

Cbrush brush( rgbNew );

Cbrush* brOld = (Cbrush*)memDC.SelectObject( &brush );

memDC.SetBkColor( rgbOld );

maskDC.BitBlt( 0,0,bm.bmWidth,bm.bmHeight,&memDC,0,0,SRCCOPY );

memDC.SetBkColor( RGB(255,255,255) );

memDC.SetTextColor( RGB(0,0,0) );

memDC.BitBlt( 0,0,bm.bmWidth,bm.bmHeight,&maskDC,0,0,DSPDxax );

maskDC.SelectObject( bmOld );

memDC.SelectObject( &brOld );

memDC.SelectObject( Bitmap );

memDC.SelectPalette( pOldPalette,FALSE );

}

因篇幅问题不能全部显示,请点此查看更多更全内容