Symbian OS应用编程图形篇之字体(2)

本文介绍了SymbianOS中字体的使用与绘制方法,包括CFont、CFbsFont及CBitmapFont等类的应用,详细讲解了通过GC进行字体绘画的具体步骤,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

前面我们介绍了字体相关的基础知识,接下来我们介绍一下在Symbian OS中如何使用并绘画字体。

 

Symbian OS 中提供了几个类用来在画字体时使用,CFont, CFbsFont, CBitmapFont, 其中CFont是抽象类,是CFbsFontCBitmapFont的基类,如下图所示:

 

CBitmapFont可以访问和使用位图字体,也可以处理开放字体。而CFbsFont可以理解为处理Symbian自带的字体,由FBserver管理,主要用于在屏幕上显示。

 

前面介绍过,无论是画图还是显示字体,都需要用GC在相应的设备上操作。下面的步骤表述了如何在设备上选择和绘画字体:

l         声明一个CFont对象指针

l         设置你想使用的字体规范(TFontSpec),即typeface, 字形,字号或大小等

l         用设备对象来获取字体并赋值给CFont对象指针,一般使用GetNearestFont…系列函数

l         设置GC所使用的字体为得到的字体,用UseFont函数

l         GCDrawText方法来绘画字体

l         GC绘画结束后,释放所选字体,用DiscardFont

l         同时设备对象也要释放字体

 

下面的代码段就是在设备上绘画字体。

 

Void DoCmdDrawText ()

    {

    //创建GC,用来绘画操作

    CFBsBitGc *iFbsBitGc = CFbsBitGc::NewL();

    //创建设备

CFbsScreenDevice* iFbsScreenDevice=CFbsScreenDevice::NewL(0, EColor256);

    iFbsBitGc->Activate(iFbsScreenDevice);

    // typeface name

    _LIT(KMyFontName,"Swiss");

    CFont* myFont;

// to get smallest Swiss font

    TFontSpec myFontSpec(KMyFontName,1);

   

    //Set font style what you want,设置字形

    //加粗

    myFontSpec.iFontStyle.SetStrokeWeight(EStrokeWeightBold);

    //斜体

    myFontSpec.iFontStyle.SetPosture(EPostureItalic);

    //阳文

    myFontSpec.iFontStyle.SetEffects(FontEffect::EEmbossed,ETrue);

    //获取字体

    iFbsScreenDevice->GetNearestFontToMaxHeightInTwips(myFont, myFontSpec, 220);

   

    //选择字体

    iFbsBitGc->UseFont(myFont);

    //设置画笔颜色为红色

    iFbsBitGc->SetPenColor(KRgbRed);

    _LIT(KText, "This is a Test!");

    TBufC<20> text (KText);

//绘制字体

    iFbsBitGc ->DrawText(KText, TPoint(20, 120));

   

    iFbsScreenDevice->Update();

   

    // Discard and destroy the font

    iFbsBitGc ->DiscardFont();

    fbsdev->ReleaseFont(myFont);

    delete iFbsScreenDevice;

    delete iFbsBitGc;

   

    }

 

需要说明的是,获取字体不仅可以使用设备对象,Symbian还提供了CFbsTypefaceStore类, 使用此类,也可以获取你想要的字体,方法也很简单,用下面的者两句代替上面用设备对象来获取字体的那句即可:

//创建CFbsTypefaceStore对象

CFbsTypefaceStore *facestore=CFbsTypefaceStore::NewL(iFbsScreenDevice);

facestore->GetNearestFontToDesignHeightInPixels(myFont,myFontSpec);

 

他们的效果是完全一样的,因为在CFbsScreenDevice中,有一个CFbsTypefaceStore对象,CFbsScreenDevice所有GetNearestFont…系列函数都是委派给了CFbsTypefaceStore对象的相应方法。

 

电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌年份的电动汽车插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售安全相关属性。每一行代表由vehicle_ID标识的唯一车辆列表。 关键特性 覆盖范围:全球制造商车型组合,包括纯电动汽车插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准速度、价格、产地、自主水平、排放、安全等级、销售保修。 时间跨度:模型跨度多年(包括传统即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在一起;注意kWh、km、hr、USD、g/km额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯一标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值