Symbian图片透明设置

透明前

Symbian图片透明设置_第1张图片

透明后

 

实现方法:

是用MARK来实现的。

  

 

map=bitmap; ibitmapMask = new ( ELeave ) CFbsBitmap(); TInt err = ibitmapMask->Create(map->SizeInPixels(), EGray256); if (err == KErrNone) { CFbsBitmapDevice *aGD = CFbsBitmapDevice::NewL(ibitmapMask); CleanupStack::PushL(aGD); CFbsBitGc *aGC = NULL; User::LeaveIfError(aGD->CreateContext(aGC)); aGC->SetPenStyle(CGraphicsContext::ENullPen); aGC->SetBrushColor(TRgb(100,100,100)); // color 的颜色随意,会影响透明度 aGC->SetBrushStyle(CGraphicsContext::ESolidBrush); aGC->DrawRect(TRect(TPoint(0, 0), map->SizeInPixels())); aGC->SetBrushStyle(CGraphicsContext::ENullBrush); delete aGC; CleanupStack::PopAndDestroy(aGD); } 图片透明效果:

virtual void DrawBitmapMasked(const TRect &aDestRect, const CFbsBitmap *aBitmap, const TRect &aSourceRect, const CFbsBitmap *aMaskBitmap, TBool aInvertMask)=0;

图像的透明显示就是图像的一部分被真实地显示在屏幕上,而其余部分则被屏幕的背景所取代。

为了实现透明或者半透明的效果,一般我们用到一张掩码位图。它实际是一个黑白位图,作用是对其它位图的可见部分进行限制。它由两部分组成,不透明部分和透明部分。当TBool aInvertMaskETrue时,白色部分为透明部分。

color 的值为TRgb(255*x,255*x,255*x) x为透明度百分比。

原图TRgb(a1,a2,a3) 背景图TRgb(b1,b2,b3)

与背景色形成新的Rgb值(显示的Rgb)值为

TRgb(a1*x+b1*(1-x),a2*x+b2*(1-x),a3*x+b3*(1-x))

你可能感兴趣的:(Symbian图片透明设置)