一:在和group同级的目录建立文件夹picture ;在picture目录下面建立svg文件夹 在下面添加svg图片sound.svg和sound_mask.svg
二:在group目录下建立 testsvg.mk文件 内容如下:
三:在group目录下的bld.inf里面假如:gnumakefile ../group/testsvg.mk全文如下:
四: 在自己的view.h下定义svg类;
CFbsBitmap* iSoundSvg; //图片会把SVG图转换成位图,如果要实现矢量拉伸,需要重新加载
CFbsBitmap* iSoundSvgMask;
五: 在自己的view.cpp下面定义头文件和常量
#include <aknutils.h>//swb
#include <graphic_bmp.mbg> //swb Bitmap enumeration
#include <akniconutils.h> // AknIconUtils类的定义
#include <graphic_svg.mbg> // Bitmap enumeration
_LIT(KSvgPath, "//resource//apps//graphic_svg.mif");
_LIT(KBitmapPath, "//resource//apps//graphic_bmp.mbm");
六:在自己的view.cpp下面的ConstructL来初始化svg对象
_LIT(KBitmapPath, "//resource//apps//graphic_bmp.mbm");
/*********加载图片***********************/
//svg
TFileName svgFile (KSvgPath);
User::LeaveIfError (CompleteWithAppPath (svgFile));
AknIconUtils::CreateIconL(iSoundSvg, iSoundSvgMask, svgFile, EMbmGraphic_svgSound,EMbmGraphic_svgSound_mask);
//iSoundSvg=AknIconUtils::CreateIconL(svgFile,EMbmGraphic_svgSound);
AknIconUtils::SetSize(iSoundSvg, TSize(50,50), EAspectRatioNotPreserved);
AknIconUtils::SetSize(iSoundSvgMask, TSize(50,50), EAspectRatioNotPreserved);
//*/
七:在自己的 view.cpp 下面的draw()画图象
// Clears the screen
gc.Clear(drawRect);
//Draw()函数中实现
//在设备绘图上下文类CWindowGc中绘制图形,CWindowGc是图形上下文CGraphicesContext类的派生类
//清空窗口上的内容
gc.SetPenStyle( CGraphicsContext::ENullPen );
gc.SetBrushColor( KRgbGray );
gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
gc.DrawRect( Rect() );
gc.SetBrushStyle( CGraphicsContext::ENullBrush );
//在客户区的第2行绘制SVG图图标
//绘制非透明SVG图
TPoint ptPos=Rect().iTl;
ptPos=Rect().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);
八: 在析构函数中删除对象
delete iSoundSvg;
delete iSoundSvgMask;
九:在mmp文件中添加lib
LIBRARY eikcoctl.lib
LIBRARY bafl.lib
LIBRARY charconv.lib
LIBRARY fbscli.lib
LIBRARY aknicon.lib bitgdi.lib mediaclientimage.lib
里面涉及到的类有俩个 还涉及到创建文件testsvg.mk 和bld.inf:
其中testsvg.mk 和bld.inf上面给出 TestSVGAppView.cpp和他的头文件分别如下:
TestSVGAppView.h:
TestSVGAppView.cpp: