WEB开发网
开发学院手机开发Symbian 开发 symbian 显示位图和SVG图 阅读

symbian 显示位图和SVG图

 2010-08-31 00:09:00 来源:WEB开发网   
核心提示://绘制非透明位图,选择不含有“Masked”单词的函数就可以了TPoint ptPos=aRect.iTl;gc.BitBlt(ptPos,iImage2); //绘制时保持原始大小//绘制透明位图,symbian 显示位图和SVG图(3),需要有相应的掩码图,只有使用两者结合才能显示成功TSize size=iIm

//绘制非透明位图,选择不含有“Masked”单词的函数就可以了

TPoint ptPos=aRect.iTl;

gc.BitBlt(ptPos,iImage2); //绘制时保持原始大小

//绘制透明位图,需要有相应的掩码图,只有使用两者结合才能显示成功

TSize size=iImage2->SizeInPixels();

TRect sourceRect( TPoint( 0,0 ),size);

ptPos.iX+=size.iWidth;

gc.BitBltMasked(ptPos,iImage2,sourceRect,iImage2mask,ETrue);

//绘制放缩的透明位图

ptPos.iX+=size.iWidth;

size.iWidth*=2;

size.iHeight*=2;

TRect destRect(ptPos,size);

gc.DrawBitmapMasked(destRect,iImage2,sourceRect,iImage2mask,ETrue);

//在客户区的第2行绘制SVG图图标

//绘制非透明SVG图

ptPos=aRect.iTl;

ptPos.iY+=100;

gc.BitBlt(ptPos,iSoundSvg);

//绘制透明SVG图

TSize size2=iSoundSvg->SizeInPixels();

TRect sourceRect2( TPoint( 0,0 ),size2);

ptPos.iX+=size2.iWidth;

gc.BitBltMasked(ptPos,iSoundSvg,sourceRect2,iSoundSvgMask,ETrue);

特殊效果绘图:

//无闪烁重绘

有大量的绘图操作时,程序刷新可能会出现闪烁

Symbian 中,出了提供窗口客户区的绘图上下文设备用于屏幕 绘图外,还提供了一个位图设备。

位图设备实际指向了一个内容中的位图对象,通过位图设备上下文,可以直接把图像绘制到位图上,也就是通过程序代码 直接在内存中绘图,然后把绘制好的位图复制到窗口客户区中。

实现步骤:

1)在Container的头文件中声明

CFbsBitmap* iOffScreenBitmap;

CFbsBitmapDevice* iOffScreenBitmapDevice;

CFbsBitGc* iOffScreenBitmapGc;

CFbsBitmap* iSoundSvg;

2)定义在后台绘画使用的位图、位图设备,位图上下文//ConstructL()

//加载svg矢量图

TFileName svgFile (KSvgPath);

User::LeaveIfError (CompleteWithAppPath (svgFile));

iSoundSvg=AknIconUtils::CreateIconL(svgFile,EMbmGraphic_svgSound);

上一页  1 2 3 4  下一页

Tags:symbian 显示 位图

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