symbian 显示位图和SVG图

wpf中使用svg图片 在wpf中,svg图片不能直接使用,但是我们知道,svg图片比png,jpg等图片都好点,原因就是它是矢量图片,不会变形。这种可以解决复杂的问题,但是在编译界面中,也就是在xaml文件中,是不显示svg图片的,只有在运行的时候,才能显示。综上所述,从操作简单,功能最全来说,建议使用第四种,最起码图片转成xaml,不用复制了。使用SharpVectors开源的库,在nuget中,直接下载使用。2.拿到xaml中的内容,放到资源文件中,取名为abc。注意:图片的路径,以及增加资源中,否则显示不出来。 阅读详情

显示位图和SVG图

先打包,在加载 ,最后绘画

打包位图资源 :
先把图片放到指定文件 夹,然后把大包脚本加入到程序 的mmp文件中(添加在end前的最后)
START BITMAP      graphic_bmp.mbm
HEADER
TARGETPATH        /resource/apps
SOURCEPATH        ../picture/bmp
SOURCE            c24  image1.bmp
SOURCE            c24  image2.bmp
SOURCE            1  image2_mask.bmp
重新编译 后,编译器会把位图图标 打包到graphic_bmp.mbm中,把生成位图资源头文件graphic_bmp.mbg存储到SDK 的头文件目录中

打包svg图资源 :
建立一个mk文件,建立后,把svg资源的mk文件加入到bld.inf文件中
加一句:gnumakefile graphic_svg.mk
重新编译后,生成SVG图片资源文件graphic_svg.mif,生成的SVG图片资源头文件graphic_svg.mbg存储在SDK的头文件目录中。

图片的加载过程:
如果想在程序中绘制图片,首先需要把图片从多图片资源文件中加载到程序内存 中生成一个位图对象 ,然后就可以在程序中绘制图片了
//加载位图图片
//声明部分
        CFbsBitmap* iBackgroundImage;
    CFbsBitmap* iImage2;
CFbsBitmap* iImage2mask;
//每个成员变量加载一个位图,在程序中,要绘制的就是这些位图类CFbsBitmap对象
        在头文件中加入
        #include <aknutils.h>
        #include <graphic_bmp.mbg> // Bitmap enumeration

//实现部分,加载位图 ConstructL()函数 中
        _LIT(KBitmapPath, "//resource//apps//graphic_bmp.mbm");

        TFileName bitmapFile (KBitmapPath);
        User::LeaveIfError (CompleteWithAppPath (bitmapFile));
       
        iBackgroundImage = iEikonEnv->CreateBitmapL( bitmapFile,EMbmGraphic_bmpImage1 );
        iImage2 = iEikonEnv->CreateBitmapL( bitmapFile,EMbmGraphic_bmpImage2 );
        iImage2mask = iEikonEnv->CreateBitmapL( bitmapFile,EMbmGraphic_bmpImage2_mask );

EMbmGraphic_bmpImage1是资源ID,在mbg文件中定义
enum TMbmGraphic_bmp
        {
        EMbmGraphic_bmpImage1,
        EMbmGraphic_bmpImage2,
        EMbmGraphic_bmpImage2_mask
        };

在用完后要删除位图对象
//在析构函数中删除
        delete iBackgroundImage;
        delete iImage2;
        delete iImage2mask;

//加载SVG图
//声明部分
    CFbsBitmap* iSoundSvg;  //图片会把SVG图转换成位图,如果要实现矢量拉伸,需要重新加载
CFbsBitmap* iSoundSvgMask;

//实现部分
#include <akniconutils.h>  // AknIconUtils类的定义
#include <graphic_svg.mbg> // Bitmap enumeration
        _LIT(KSvgPath, "//resource//apps//graphic_svg.mif");
//加载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);

//用后同样要删除
        delete iSoundSvg;
        delete iSoundSvgMask;

图片的显示过程:
//Draw()函数中实现
        在设备绘图上下文类CWindowGc中绘制图形,CWindowGc是图形上下文CGraphicesContext类的派生类
        //清空窗口上的内容
        gc.SetPenStyle( CGraphicsContext::ENullPen );
        gc.SetBrushColor( KRgbGray );
        gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
        gc.DrawRect( aRect );
        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
       
        //绘制客户区背景
        //gc.BitBlt( Rect().iTl,iBackgroundImage );
        gc.DrawBitmap(aRect,iBackgroundImage);  //通过拉伸的方式放缩要目标矩形中
       
        //在客户区的第一行绘制位图图标
        //绘制非透明位图,选择不含有“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);
        AknIconUtils::SetSize(iSoundSvg, TSize(50,50), EAspectRatioNotPreserved);
       
    // 创建离屏位图、位图设备、位图设备上下文
    iOffScreenBitmap = new ( ELeave ) CFbsBitmap();  //创建一个空的位图
    CleanupStack::PushL( iOffScreenBitmap );
    User::LeaveIfError( iOffScreenBitmap->Create( Rect().Size(),EColor4K ) ); //位图的尺寸设置 成与程序客户区的尺寸相同
    CleanupStack::Pop();
    iOffScreenBitmapDevice = CFbsBitmapDevice::NewL(iOffScreenBitmap );  //创建一个位图设备
    iOffScreenBitmapDevice->CreateContext( iOffScreenBitmapGc );                    //创建位图设备的位图设备上下文
3)在析构函数中加入
    delete iOffScreenBitmapGc;
        iOffScreenBitmapGc = NULL;
        delete iOffScreenBitmapDevice;
        iOffScreenBitmapDevice = NULL;
        delete iOffScreenBitmap;
        iOffScreenBitmap = NULL;
4)在位图上绘制图形
//清除位图设备下文中的背景
    iOffScreenBitmapGc->SetPenStyle( CGraphicsContext::ENullPen );
    iOffScreenBitmapGc->SetBrushColor( KRgbGray );
    iOffScreenBitmapGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
    iOffScreenBitmapGc->DrawRect( aRect );
   
    iOffScreenBitmapGc->SetPenStyle(CGraphicsContext::ESolidPen);
    iOffScreenBitmapGc->DrawEllipse(Rect());
   
    iOffScreenBitmapGc->BitBlt(aRect.iTl,iSoundSvg);

//负责位图中已经绘制好的图形的到程序窗口客户区中
    CWindowGc& gc = SystemGc();
gc.BitBlt( Rect().iTl,iOffScreenBitmap );

效果
 

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/linzhiji/archive/2010/01/29/5270522.aspx

基于Plecs的LLC谐振变换器闭环设计:从PI参数整定到动态响应优化 本文详细介绍了在Plecs仿真环境中,如何为半桥LLC谐振变换器设计并优化闭环控制系统。从开环模型搭建与特性分析入手,重点阐述了基于频域法的PI控制器参数整定流程,并通过负载阶跃、输入电压突变等测试优化动态响应。文章还分享了从仿真模型过渡到实际硬件时的关键注意事项,帮助工程师实现稳定、高效的电源设计。 阅读详情

相关推荐

汉字跨越三千年的生命力与数字时代适应性

文字作为文明载体,其演变规律始终遵循实用性与适应性的平衡。汉字作为现存最古老的文字系统,凭借形义结合的六书构造原理,实现了超方言的文化统一功能。在计算机处理方面,五笔输入法与Unicode支持证明了其技术兼容性,而视觉识别效率的先天优势使其在信息时代更具传播效力。从甲骨文识别AI到现代书法设计,汉字系统持续展现强大的文化承载力与技术适应性,这种活态传承为数字人文研究提供了独特样本。

weixin_29058331的博客 353

symbian 显示位图和SVG图(转)

显示位图和SVG图 先打包,在加载 ,最后绘画 打包位图资源 : 先把图片放到指定文件 夹,然后把大包脚本加入到程序 的mmp文件中(添加在end前的最后)START BITMAP graphic_bmp.mbmHEADERTARGETPATH \resource\appsSOURCEPATH ..\picture\bmpSOURCE...

weixin_30852367的博客 130

AppFlow实战:零代码将Dify接入企业微信的完整指南

本文提供了一份零代码将Dify AI应用接入企业微信的完整实战指南。通过使用阿里云AppFlow作为无代码连接器,详细讲解了从获取Dify API密钥、创建企业微信应用到配置自动化流程的全过程,帮助团队快速将AI能力无缝融入日常协作,大幅提升工作效率。

php55的博客 808

symbian程序图标使用svg和svg的制作

<br />svg图标的制作:<br /> <br />Inkscape是开源软件,完全免费.<br />附下载地址,http://www.onlinedown.net/soft/44150.htm<br />下载安装之后就可使使用了。<br /> <br /><br />首先做一个png的icon,<br />然后用Inkscape转换成svg格式.<br />转换方法:<br />1,打开Inkscape,点"文件"->"文档属性"->设置高度和宽度大小为48px,然后关闭对话框.<br />2,"文件

开发简记 1624

EV1527、PT2262傻傻分不清?一文讲透常见315/433MHz遥控编码协议区别与选型

本文深度对比了EV1527、PT2262和SC5262三种常见的315/433MHz遥控编码协议,详细解析了它们的技术特点、成本效益和适用场景。EV1527作为低成本方案的首选,特别适合智能家居和简易安防设备;PT2262在稳定性和兼容性上表现优异;而SC5262则在安全性方面具有显著优势。文章还提供了实用的选型框架和工程建议,帮助开发者在不同应用场景中做出最优决策。

weixin_33640562的博客 349

Windows平台无人机仿真:从零搭建SITL环境与QGC联调

本文详细指导了在Windows平台上从零搭建无人机软件在环(SITL)仿真环境,并与QGroundControl(QGC)进行联调的完整流程。通过使用Cygwin工具链,开发者可以在没有实体硬件的情况下,模拟运行ArduPilot飞控,并通过MAVLink协议连接QGC地面站进行全功能测试,为无人机软件开发提供了一个安全、经济的虚拟沙盒环境。

weixin_29239279的博客 408

在WPF中完美显示SVG图片:最佳方案揭秘

在现代应用程序开发中,矢量图形(SVG)因其无损缩放和轻量化的特性,成为UI设计的主流选择。然而,WPF(Windows Presentation Foundation)原生并不支持直接加载SVG文件,这给开发者带来了一定的挑战。本文将为你揭秘在WPF中完美显示SVG图片的最佳方案,帮助你轻松实现高质量的矢量图形展示。虽然WPF支持矢量图形,但SVG文件需要经过转换才能在WPF中使用。立即尝试这些方案,让你的WPF应用拥有更精致、更专业的矢量图形体验!为了在WPF中高效地显示SVG图片,推荐使用。

玉面小浪君的博客 3282

Cursor Pro版保姆级开通教程:绕过7天试用,支付宝一步搞定(附地区报错解决方案)

本文详细介绍了Cursor Pro版的订阅流程,包括支付宝支付步骤和解决区域报错的实用方案。针对开发者常见的网络问题和云服务器配置需求,提供了从本地环境调整到云端部署的完整指南,帮助用户高效解锁Pro版的代码补全、私有代码库等核心功能。

weixin_28710999的博客 2098

【免费下载】 WPFImage控件加载SVG图片解决方案:让SVG图片在WPF中完美呈现

在当今界面设计中,SVG图片因其矢量特性而广受欢迎,但如何在WPF Image控件中高效加载SVG图片,一直是开发者的痛点。本文将为您介绍一款强大的开源项目——WPF Image控件加载SVG图片解决方案,轻松解决这一难题。 ## 项目介绍 WPF Image控件加载SVG图片解决方案,是一种针对WPF应用程序的SVG图片加载工具。该项目通过引入SharpVectors.Converters....

gitblog_06731的博客 452

Win10平台下QT6.9.0 OpenCV 4.10.0从入门到精通

我最近开发一个视觉项目,我们从0开始记录在windows 10下 用QT6.9+OpenCV 4.10.0搞定整个项目的开发过程。以抛砖引玉,大家共同进步。

fds111111的博客 1712

【技术解析】Point-NeRF:如何通过点云优化加速神经辐射场渲染

本文深入解析了Point-NeRF技术,它通过引入3D点云作为几何先验,有效解决了传统神经辐射场渲染速度慢的痛点。该方法利用神经点云构建局部辐射场,结合点剪枝与生长策略进行动态优化,在保证高渲染质量的同时,实现了高达30倍的训练加速,为高效3D场景重建提供了新范式。

weixin_29159127的博客 267

Symbian显示位图和SVG图 【转】

<br />显示位图和SVG图 <br />先打包,在加载 ,最后绘画 <br />打包位图资源 : <br />先把图片放到指定文件 夹,然后把大包脚本加入到程序 的mmp文件中(添加在end前的最后)<br />START BITMAP      graphic_bmp.mbm<br />HEADER<br />TARGETPATH        /resource/apps<br />SOURCEPATH        ../picture/bmp<br />SOURCE            c24

czlovfine的专栏 253

phpMyAdmin | mysqli::real_connect(): (HY000/2002): No such file or directory

第一次安装宝塔mysql服务是默认关闭的,需要手动打开,打开服务再次进入phpMyAdmin发现可以进入了。

吻等离子的博客 2871

显示位图和SVG图

<br /><br /> <br /> <br />先打包,在加载 ,最后绘画 <br /> <br />打包位图资源 : <br />先把图片放到指定文件 夹,然后把大包脚本加入到程序 的mmp文件中(添加在end前的最后)<br />START BITMAP      graphic_bmp.mbm<br />HEADER<br />TARGETPATH        /resource/apps<br />SOURCEPATH        ../picture/bmp<br />SOURCE    

World of iOs 2572

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Symbian 显示位图的例子

 学习了一个Symbian 显示位图的例子 这个例子的关键是资源文件的配制 其他的也不是很麻烦:图片的放置位置是:创建一个和group同级的picture文件夹 在文件夹里面建立一个文件夹bmp里面有三个bmp格式的文件image1.bmp image2.bmp   image2_mask.bmp 一:在mmp文件的末尾加上打包图片的文件命令:START BITMAP testsv

shiwenbin333的专栏 1772

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Symbian 显示 svg 图的例子

一:在和group同级的目录建立文件夹picture ;在picture目录下面建立svg文件夹 在下面添加svg图片sound.svg和sound_mask.svg二:在group目录下建立 testsvg.mk文件 内容如下:ifeq (WINS,$(findstring WINS, $(PLATFORM)))ZDIR=$(EPOCROOT)epoc32/release/$(PLA

shiwenbin333的专栏 3471

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

How to create a Symbian application icon (SVG)

视频教程: http://www.developer.nokia.com/Resources/Library/Design_and_UX/designing-for-nokia-platforms/designing-for-symbian/symbian-iconography-guidelines/symbian-launcher-icon-templates/symbian-inksc

andych008的专栏 1765

Symbian学习笔记(3)转载

上次学习的是从MIF和MBM文件中加载图像,一般在程序中出现的图片都可以用这个方法,但有一点点遗憾,它只能使用svg或bmp格式,BREW或J2ME中的资源却多为png格式的。 如果想在symbian中使用jpg或者png图片,则需要用到symbian提供的那个Multimedia ICL库里的类了。其中比较重的是CImageDecoder类,提供了对图像进行解码的功能。 来看看如何使用它的...

jianhai1229的博客 154

Symbian学习笔记(5):加载JPEG图像的方法

  上次学习的是从MIF和MBM文件中加载图像,一般在程序中出现的图片都可以用这个方法,但有一点点遗憾,它只能使用svg或bmp格式,BREW或J2ME中的资源却多为png格式的。 如果想在symbian中使用jpg或者png图片,则需要用到symbian提供的那个Multimedia ICL库里的类了。其中比较重的是CImageDecoder类,提供了对图像进行解码的功能。来看看如何使用

SHARE & TOP 3532

Symbian学习笔记(5)——加载JPEG图像的方法

  上次学习的是从MIF和MBM文件中加载图像,一般在程序中出现的图片都可以用这个方法,但有一点点遗憾,它只能使用svg或bmp格式,BREW或J2ME中的资源却多为png格式的。 如果想在symbian中使用jpg或者png图片,则需要用到symbian提供的那个Multimedia ICL库里的类了。其中比较重的是CImageDecoder类,提供了对图像进行解码的功能。来看看如何使用

穿拖鞋写程序 696

Symbian OS应用编程图形篇之动画(2)

  前面介绍了Symbian OS中Window Server的插件动画,这里要介绍的是Symbian OS中另一类动画—--应用程序框架下的动画。这类动画实际上是一个提供构建动画图形应用的框架,它提供了基本的动画数据类型(如gif, svg),并将其并入客户端窗体的一般绘画操作中,或者在服务端将其作为一个精灵(sprite)。 关于这类动画,有几个关键的概念,如动画(Animatio

pursuer_zhao的专栏 1714
上一篇: Carbide.c++ IDE的常用快捷键和技巧 + Symbian OS的错误代码定义大全
下一篇: 转:程序员之死
jinble03
博客等级 码龄17年 38粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值