Symbian图片透明设置

来源:互联网 发布:admin shopinfo.php 编辑:程序博客网 时间:2024/05/05 03:53

 

 

实现方法:

是用MARK来实现的。

   view plaincopy to clipboardprint?
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);  
       } 
 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 aInvertMask为ETrue时,白色部分为透明部分。

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))

原创粉丝点击