Symbian 显示 svg 图的例子

一:在和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:

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值