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

Polyworks脚本开发实战指南:高效生成数据彩图与报告的关键指令解析 本文深入解析了Polyworks脚本开发中生成数据彩图与自动化报告的核心指令。通过实战案例,详细介绍了REFERENCE_SURFACE、THICKNESS和CLEARANCE等关键彩图生成指令的正确用法与常见避坑点,并阐述了如何利用REPORT_ITEM命令实现从截图、表格生成到智能排版的全流程自动化,旨在帮助三维检测与质量控制工程师大幅提升工作效率与报告标准化水平。 阅读详情

相关推荐

Ansys EMC Plus:用于仿真屏蔽效果的一键式工作流程

在 EMA3D 选项卡下,单击 Shielding Effectiveness 按钮下方的箭头以访问设置并使用所需数量的分割数启动工作流程,这些分割数定义了网格大小。在此示例中,设置了 35 个分段,提供了良好的 FDTD 网格,同时保持了较短的仿真运行时间。接下来,选择默认的平面波源文件,然后选择所需的分析方向。您还可以查看和调整仿真树中的仿真参数,包括定义最低和最高频率值的解域、入射平面波的极化以及探针设置。您可以控制屏蔽效果图设置,并以线性比例显示结果。仿真完成后,软件将绘制与频率相关的屏蔽效果图。

jkh920184196的博客 872

symbian 显示位图和SVG图(转)

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

weixin_30852367的博客 130

Windows Server 2008 R2装不上VMware Tools?别急,手动安装驱动补丁的保姆级教程来了

本文提供了Windows Server 2008 R2手动安装VMware Tools驱动补丁的详细教程,解决驱动签名验证失败问题。通过获取特定补丁文件、创建安装介质、挂载虚拟机并安装补丁等步骤,帮助用户顺利完成VMware Tools安装,提升虚拟机功能与性能。

weixin_28335283的博客 468

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

【毕设课设】基于YOLO v3与LSTM的水位智能识别系统(附完整源码+数据集)

本文详细介绍了基于YOLO v3与LSTM的水位智能识别系统的完整实现方案。该系统通过YOLO v3精准定位水位尺数字,结合LSTM-OCR进行序列识别,并融合霍夫变换检测刻度线,实现高精度水位自动读取。项目提供了从环境搭建、模型训练到集成部署的全流程指南,并附有完整源码和数据集,是理想的毕设课设实战项目。

php55的博客 609

TMC2209的UART模式详解:如何用串口调试助手配置细分和电流(避坑指南)

本文深入解析TMC2209步进电机驱动器的UART模式,详细讲解如何通过串口调试助手配置细分和电流,包括硬件连接、通信协议、关键寄存器设置及高级功能应用。提供实战避坑指南,帮助开发者优化步进电机控制性能,适用于精密仪器、3D打印等场景。

weixin_29166013的博客 541

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

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

玉面小浪君的博客 3282

《嵌入式-STM32开发指南》第三部分 外设篇 - 第2章 温度传感器DS18B20

2.1 理论分析 2.1.1概述 DS18B20 是 DALLAS 最新单线数字温度传感器,新的"一线器件"体积更小、适用电压更宽、更经济。Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 "一线总线"接口的温度传感器。 DS18B20采用的单总线协议,也就是只需占用主机一个I/O口,无需其他外围电路,直接将环境温度转换为数字信号,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。另外,以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量

不问归期的博客 8305

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

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

gitblog_06731的博客 452

基于Simulink的PMSM轮毂电机崎岖路面悬架协同控制仿真

本文完成了基于Simulink的PMSM轮毂电机崎岖路面悬架协同控制仿真,实现了:✅ 构建了四轮独立驱动+主动悬架高保真整车模型✅ 实现了Skyhook主动悬架控制✅ 设计了驱动-悬架状态共享与协同决策机制✅ 验证了5 m/s高速下连续颠簸路面稳定通过能力✅ 为高性能移动机器人提供一体化底盘解决方案。

xiaoheshang_123的博客 190

我用C#实现上位机数据一键导出Excel:从乱码到百万行数据秒级导出的实战技巧

ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("日报表");// 1. 标题(合并单元格)worksheet.Cells["A1"].Value = $"产线日报表 -DateTimeNowToString// 2. 表头和数据(同上)worksheet.Cells["A3"].Value = "时间";// ...省略表头和数据填充// 3. 合计行(公式计算)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 712

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

2、欧洲期权的赫斯顿模型

本文详细介绍了赫斯顿随机波动率模型在欧洲期权定价中的应用。模型通过引入随机方差过程,克服了布莱克-斯科尔斯模型中波动率恒定的局限性,更贴近市场实际。文章阐述了模型的动态结构、风险中性转换、期权定价公式及其半封闭解的计算方法,并提供了基于VBA的数值实现方案。通过梯形法则与高斯积分等数值方法对比,分析了不同积分策略的精度与效率。同时验证了当波动率为零时,赫斯顿模型退化为布莱克-斯科尔斯模型的一致性。最后讨论了模型的优势、挑战及实际应用建议,强调了数值积分稳定性和参数估计的重要性。

tequila的博客 349

显示位图和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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jre9下载 jdk9

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

Symbian 显示位图的例子

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

shiwenbin333的专栏 1772

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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、付费专栏及课程。

余额充值