登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: [symbian/uiq] uiq 3 系统字体变斜的解决办法     [回主站]     [分站链接]
标题
[symbian/uiq] uiq 3 系统字体变斜的解决办法
clq
浏览(0) + 2008-09-07 23:33:23 发表 编辑

关键字:

[symbian/uiq] uiq 3 系统字体变斜的解决办法

draw 函数中输出字体时,"惊喜"地发现字体是斜的! 以下为解决办法:

//绘图函数,相当于 onpaint()
void CCanvasView::Draw(const TRect& aRect) const
{
CWindowGc& gc = SystemGc();

//uiq 的斜体字要有下面这几句才变正 // 来自 https://developer.sonyericsson.com/thread/43910
////font->FontSpecInTwips().iFontStyle.SetPosture(EPostureUpright);
const CCoeFontProvider& fontProvider = FindFontProvider();
const CFont& font2 = fontProvider.Font(TCoeFont::NormalFont(), AccumulatedZoom());

gc.UseFont( &font2 );

//gc.UseFont(font);
gc.DrawText(_L("aaab123"), TPoint(30, 30));

}

clq
2008-9-7 23:36:00 发表 编辑

来自 http://embed.e800.com.cn/articles/2008/31/1204306351454149301_1.html


使用设备无关字体在S60中正常UIQ3中统统变斜的解决方案
2008-2-29 推荐:0 收藏:0 评论:0 来源:本站原创

* 热门标签
* S60
* UI

问题描述:
1.使用CEikonEnv::Static()->NormalFont()或者其他如TitleFont等接口获得CFont实例
2.CGraphicsContext::UseFont( fontUsed )设置字体
3.使用CGraphicsContext::DrawText()绘制字体
如上情况,便会出现S60正常,UIQ3却统统变斜体的问题.
问题分析:
google了半天,查到《ProgrammersGuide》中
2.1.7 Font provider and control screen fonts,“More specifically, this means that the use of the
NormalFont() and the CEikonEnv''s LegendFont(), TitleFont(), AnnotationFont() and
DenseFont() must be removed from all code. ”
也就是说,问题出在之前S60中获得CFont实例的函数已经被废弃。
参考文档给出的解决方式,只是在CCoecontrol::Draw中作处理。代码如下:
CSomeControl::Draw(const TRect& aRect)
{
const CCoeFontProvider& fontProvider = FindFontProvider();
const CFont& font = fontProvider.Font(TCoeFont::LegendFont(),
AccumulatedZoom());
XCoeTextDrawer textDrawer = TextDrawer();
textDrawer->SetAlignment(EHCenterVCenter);
textDrawer.DrawText(gc, iText, rect, font);
}

但是,如果不是在这个地方,因为CCoecontrol::TextDrawer()是Protect的方法无法使用,经过验证,如下的代码可以解决这个问题,参考代码如下:
.h
class CWindow
{
...
private:
CFbsBitmap* m_pBackBitmap;
CFbsBitmapDevice* m_pBackDevice;
CFbsBitGc* m_pBackGc;
CCoeControl* m_pOwner;
HBufC* m_pLCaption;
...
};

.cpp
...

void CWindow::Draw( const CFbsBitGc* aGc ) const
{
#if defined(_UIQ3_SDK_)
const CCoeFontProvider& fontProvider = m_pOwner->FindFontProvider();
const CFont& fontUsed = fontProvider.Font(TCoeFont::NormalFont(), m_pOwner->AccumulatedZoom());
m_pBackGc->UseFont( &fontUsed );

TInt baselineOffset=( rect_bar.Height() / 2 + fontUsed.AscentInPixels() / 2 );
#else
const CFont* fontUsed;
fontUsed = CEikonEnv::Static()->NormalFont();
m_pBackGc->UseFont( fontUsed );

TInt baselineOffset=( rect_bar.Height() / 2 + fontUsed->AscentInPixels() / 2 );
#endif
if ( NULL != m_pLCaption )
{
m_pBackGc->DrawText( *m_pLCaption, rect_bar, baselineOffset, CGraphicsContext::ELeft, 4 );
}
...
}
...


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1