跳转到路径导航栏
跳转到正文内容

Symbian中半透明效果密探

http://www.sina.com.cn  2009年11月04日 17:12  IT168.com

  【IT168 技术】半透明效果在UI的设计与开发中运用的越来越广泛,为此本人将自己的实践与大家进行分享,希望能够帮助那些仍然为实现半透明效果的朋友尽绵薄之力。我封装了一个方法,传入相应的图片,就会把图片变成半透明效果并显示在程序界面上.

  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

Powered By Google

新浪简介About Sina广告服务联系我们招聘信息网站律师SINA English会员注册产品答疑┊Copyright © 1996-2009 SINA Corporation, All Rights Reserved

新浪公司 版权所有