WEB开发网
开发学院手机开发Symbian 开发 Symbian CFbsMapd 图片开发 阅读

Symbian CFbsMapd 图片开发

 2010-03-24 17:22:00 来源:WEB开发网   
核心提示:1:做过的人都知道,对于一张图,Symbian CFbsMapd 图片开发,在Symbian中表示为 CFbsBitmap的对象,如果是有Mask的画就是两张,这是两种不同的效果,需要区分,一个叫做bitmap一个叫做mask,一般我们是这样命名的

1:做过的人都知道,对于一张图,在Symbian中表示为 CFbsBitmap的对象,如果是有Mask的画就是两张,一个叫做bitmap一个叫做mask,一般我们是这样命名的。你可以在控件的draw方法里面取systemgc来描画它,为了得到mask透明就用如下的方法。

iBitmap = new(ELeave) CFbsBitmap();

iMask = new(ELeave) CFbsBitmap();

gc.BitBltMasked(TPoint(0, 0), iBitmap, TRect(iBitmap()->SizeInPixels()), iMask, EFalse);

2:现在我们把这个有mask的图不直接描画到window上,而是用 double-buffer的方法来描画到一个offscreen的bitmap上,如果我们现在这个offscreen的bitmap上先画个红色,而且像让我们后来描画的图片不覆盖offscreen的底图颜色,即要求他仍然后mask的透明效果我们就需要这么做:

iBackGround = new(ELeave) CFbsBitmap;

User::LeaveIfError(iBackGround->Create(iGulIcon->Bitmap()->SizeInPixels(), iGulIcon->Bitmap()->DisplayMode()));

CFbsBitmapDevice *backgroundDevice = CFbsBitmapDevice::NewL(iBackGround);

CFbsBitGc* backgroundGc(NULL);

User::LeaveIfError(backgroundDevice->CreateContext(backgroundGc));

backgroundGc->SetBrushStyle(CGraphicsContext::ESolidBrush);

backgroundGc->SetBrushColor(KRgbRed);

backgroundGc->DrawRect(TRect(iGulIcon->Bitmap()->SizeInPixels()));

backgroundGc->SetBrushStyle(CGraphicsContext::ENullBrush);

backgroundGc->BitBltMasked(TPoint(0, 0), iGulIcon->Bitmap(), iGulIcon->Bitmap()->SizeInPixels(), iGulIcon->Mask(), EFalse);

delete backgroundGc;

delete backgroundDevice;

当我们在用systemgc的如下方法描画时就得到一个方红图上一个图标:

gc.BitBlt(TPoint(50, 0), iBackGround);

3. 如果我们把这个图片进行拉伸,就可以用gc的drawbitmap来做。此处有两种不同的效果,如果我们想拉伸后的图在新的doublebuffer上是 mask透明的,还有就是整个doublebuffer的bitmap在window上是透明的。这是两种不同的效果,需要区分,实现的时候也是不一样的。

1 2 3  下一页

Tags:Symbian CFbsMapd 图片

编辑录入:coldstar [复制链接] [打 印]
赞助商链接