图片半透明效果
2009-04-07 00:28
253 查看
我封装了一个方法,传入相应的图片,就会把图片变成半透明效果并显示在程序界面上.
void CMegajoyContainer::ConvertToAlpha(CWindowGc& gc,CFbsBitmap *imgToBrighten) const
{
CFbsBitmap* iEmptyBitmap = new ( ELeave ) CFbsBitmap();
CleanupStack::PushL( iEmptyBitmap );
User::LeaveIfError( iEmptyBitmap->Create( imgToBrighten->SizeInPixels(), CEikonEnv::Static()->DefaultDisplayMode() ) );
CFbsBitmapDevice *iGD = CFbsBitmapDevice::NewL( iEmptyBitmap );
CleanupStack::PushL( iGD );
CFbsBitGc *iGC;
User::LeaveIfError( iGD->CreateContext( iGC ) );
iGC->SetPenStyle( CGraphicsContext::ENullPen );
iGC->SetBrushColor( KRgbWhite );
iGC->SetBrushStyle( CGraphicsContext::ESolidBrush );
iGC->DrawRect( TRect(TPoint(0,0), iEmptyBitmap->SizeInPixels()) );
iGC->SetBrushStyle( CGraphicsContext::ENullBrush );
delete iGC;
CleanupStack::PopAndDestroy( iGD );
CFbsBitmap* iEmptyBitmapMask = new ( ELeave ) CFbsBitmap();
CleanupStack::PushL( iEmptyBitmapMask );
User::LeaveIfError( iEmptyBitmapMask->Create( imgToBrighten->SizeInPixels(), EGray256 ) );
iGD = CFbsBitmapDevice::NewL( iEmptyBitmapMask );
CleanupStack::PushL( iGD );
User::LeaveIfError( iGD->CreateContext( iGC ) );
iGC->SetPenStyle( CGraphicsContext::ENullPen );
iGC->SetBrushColor( KRgbGray );
iGC->SetBrushStyle( CGraphicsContext::ESolidBrush );
iGC->DrawRect( TRect(TPoint(0,0), iEmptyBitmap->SizeInPixels()) );
iGC->SetBrushStyle( CGraphicsContext::ENullBrush );
delete iGC;
CleanupStack::PopAndDestroy( iGD );
gc.BitBltMasked(TPoint(0,0),iEmptyBitmap,TRect(TPoint(0,0),iEmptyBitmapMask->SizeInPixels()),iEmptyBitmapMask,EFalse);
CleanupStack::PopAndDestroy(iEmptyBitmapMask);
CleanupStack::PopAndDestroy( iEmptyBitmap );
}
注意要在.mmp文件中加入库文件
LIBRARY bitgdi.lib
LIBRARY ws32.lib
LIBRARY fbscli.lib
效果如下:
原图片为
转变后的图片为
void CMegajoyContainer::ConvertToAlpha(CWindowGc& gc,CFbsBitmap *imgToBrighten) const
{
CFbsBitmap* iEmptyBitmap = new ( ELeave ) CFbsBitmap();
CleanupStack::PushL( iEmptyBitmap );
User::LeaveIfError( iEmptyBitmap->Create( imgToBrighten->SizeInPixels(), CEikonEnv::Static()->DefaultDisplayMode() ) );
CFbsBitmapDevice *iGD = CFbsBitmapDevice::NewL( iEmptyBitmap );
CleanupStack::PushL( iGD );
CFbsBitGc *iGC;
User::LeaveIfError( iGD->CreateContext( iGC ) );
iGC->SetPenStyle( CGraphicsContext::ENullPen );
iGC->SetBrushColor( KRgbWhite );
iGC->SetBrushStyle( CGraphicsContext::ESolidBrush );
iGC->DrawRect( TRect(TPoint(0,0), iEmptyBitmap->SizeInPixels()) );
iGC->SetBrushStyle( CGraphicsContext::ENullBrush );
delete iGC;
CleanupStack::PopAndDestroy( iGD );
CFbsBitmap* iEmptyBitmapMask = new ( ELeave ) CFbsBitmap();
CleanupStack::PushL( iEmptyBitmapMask );
User::LeaveIfError( iEmptyBitmapMask->Create( imgToBrighten->SizeInPixels(), EGray256 ) );
iGD = CFbsBitmapDevice::NewL( iEmptyBitmapMask );
CleanupStack::PushL( iGD );
User::LeaveIfError( iGD->CreateContext( iGC ) );
iGC->SetPenStyle( CGraphicsContext::ENullPen );
iGC->SetBrushColor( KRgbGray );
iGC->SetBrushStyle( CGraphicsContext::ESolidBrush );
iGC->DrawRect( TRect(TPoint(0,0), iEmptyBitmap->SizeInPixels()) );
iGC->SetBrushStyle( CGraphicsContext::ENullBrush );
delete iGC;
CleanupStack::PopAndDestroy( iGD );
gc.BitBltMasked(TPoint(0,0),iEmptyBitmap,TRect(TPoint(0,0),iEmptyBitmapMask->SizeInPixels()),iEmptyBitmapMask,EFalse);
CleanupStack::PopAndDestroy(iEmptyBitmapMask);
CleanupStack::PopAndDestroy( iEmptyBitmap );
}
注意要在.mmp文件中加入库文件
LIBRARY bitgdi.lib
LIBRARY ws32.lib
LIBRARY fbscli.lib
效果如下:
原图片为
转变后的图片为
相关文章推荐
- css实现图片半透明效果
- 模拟 手机QQ 点击头部图片 使其变成半透明 使用一张图片实现此效果
- 图片半透明效果
- jquery实现hover图片半透明效果
- 图片与文字半透明效果 鼠标移上不透明
- 设置图片渐变效果,遮罩层、半透明
- 半透明图片效果,鼠标移动上去就透明,支持Firefox/IE
- 让png格式图片在网页中透明显示,让IE8支持半透明效果滤镜
- Brew中实现图片半透明效果
- 为Symbian程序中的图片增加半透明效果
- GDI_图片半透明效果示例
- css实现图片半透明效果
- 让png格式图片在网页中透明显示,让IE8支持半透明效果滤镜
- 让png格式图片在网页中透明显示,让IE8支持半透明效果滤镜
- JQuery实现网页半透明弹出层查看图片效果
- ps制作玻璃效果(整体透明且上为白色半透明下为无色透明)的PNG格式背景图片
- 在Windows Mobile上实现显示图片半透明的效果
- C#图片半透明效果
- css实现你的网页图片半透明效果