首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 绘图 >> 正文
图片半透明效果
作者:Crazy Wi…    文章来源:http://blog.csdn.net/dongfengsun/archive/2006/12/28/1465656.aspx    更新时间:2007-1-9 9:54:31

我封装了一个方法,传入相应的图片,就会把图片变成半透明效果并显示在程序界面上.

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

效果如下:

原图片为

转变后的图片为

相关文章:
如何在进程间共享文件句柄
能力(Capabilities)
在S60 3rd的手机上显示所有已安装程序的Uid
S60平台:Bluetooth API开发伙伴指南——蓝牙开发接口V2的结构
创建不提示用户使用哪种方法连接或者选择哪个GPRS接入点的Internet连接
在Symbian exe 程序中显示图形
利用Recognizer编写自己的开机自启动程序
在缩放图片时不保留高宽比导致程序异常
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号