CFont中的nOrientation的作用是什么?

fescort 2011-05-10 05:53:35
请教个问题
CFont中的nOrientation的作用是什么?
它能控制实现什么样的效果?
它和int nEscapement,有什么区别?

研究过MSDN上的解释,但没弄明白

用CDC输出文字能实现如下文字输出效果吗?
1
2
3
4
5
6
7
8
9
...全文
367 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
(☆随缘☆) 2013-05-24
  • 打赏
  • 举报
回复
友情来帮断个楼
a87783466 2013-05-24
  • 打赏
  • 举报
回复
SetGraphicsMode( pDC->m_hDC, GM_ADVANCED ); 嗨,大家好,我又来了,这回我带来了正确的答案!! 只要在前面加上这句就行! http://computer-programming-forum.com/82-mfc/929eafd265825a02.htm (万分感谢楼上兄弟之友情一断!!!感谢管理员帮我抽楼!感谢断楼的兄弟!我终于能发出来了!谢谢!!!)
a87783466 2012-04-11
  • 打赏
  • 举报
回复
管理员在吗 把我的回复全删了吧、、 我搞错了 那是斜体不是斜角度
a87783466 2012-04-11
  • 打赏
  • 举报
回复
CFont::CreateFont

BOOL CreateFont(
int nHeight,
int nWidth,
int nEscapenment,
intnOrientation,
int nWeight,
BYTE bItalic,
BYTE bUnderline,
BYTE cStrikeOut,
BYTE nCharset,
BYTE nOutPrecision,
BYTE nClipPrecision,
BYTE nQuality,
BYTE nPitchAndFamily,
LPCTSTR lpszFacename
);

返回值:如果成功,则返回非零值,否则为0。

nEscapement, 设置一行字体的斜度
nOrientation, 设置一个字体的斜度

我试出来了,nOrientation要在bItalic设置为TRUE的情况下才有用,试试吧

CFont font;
font.CreateFont(50,30,\
100,100,FW_THIN,FALSE,TRUE,TRUE,\
DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,\
CLIP_LH_ANGLES,DEFAULT_QUALITY,FF_DECORATIVE,"noname");
pDC->SelectObject(font);
pDC->TextOut(0,568,"中文字");
fescort 2011-05-12
  • 打赏
  • 举报
回复
谢谢 VisualEleven

我测试了这段代码
好像控制实现效果的是"@宋体"和nEscapement
是否设置nOrientation没有影响

能解释一下"@宋体"是什么作用吗?
Eleven 2011-05-12
  • 打赏
  • 举报
回复
你这个估计得一个数字一个数字的输出了,要是中文的话,下面这样可以的
CPaintDC dc(this);
CFont font;
CFont *pOldFont;

font.CreateFont(18, 0, 2700, 900, FW_NORMAL,
0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH,"@宋体");
pOldFont=dc.SelectObject(&font);
dc.TextOut(50,50,"你好世界!");
dc.SelectObject(&pOldFont);
starytx 2011-05-12
  • 打赏
  • 举报
回复
其实这些参数你可以动手试一下就知道意义了,比在这儿问要直观,效果还要好[Quote=引用 6 楼 fescort 的回复:]
没人回答吗?
自己顶一下
[/Quote]
fescort 2011-05-12
  • 打赏
  • 举报
回复
没人回答吗?
自己顶一下
fescort 2011-05-11
  • 打赏
  • 举报
回复
To heksn:
您的回复未解释出nEscapement和nOrientation的区别
nEscapement是字体的倾斜角。
nOrientation是字体的倾斜角。

fescort 2011-05-11
  • 打赏
  • 举报
回复
To lanlandetian:
看你的解释好像挺明白
可是设置Orientation为什么不起作用呢?
设置nEscapement后的效果是字符串整体旋转了
但每个字都“倒了”
而我想实现的效果是字符串整体旋转,但每个字是正的

To VisualEleven:
您这段代码的效果是字符串中的每个字随字符串整体旋转了
每个字都“倒了”
而我想实现的效果是字符串整体旋转,但每个字是正的
  • 打赏
  • 举报
回复
函数原型:

HFONT CreateFont(int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int fnWeight,
DWORD fdwltalic,
DWORD fdwUnderline,
DWORD fdwStrikeOut,
DWORD fdwCharSet,
DWORD fdwOutputPrecision,
DWORD fdwClipPrecision,
DWORD fdwQuality,
DWORD fdwPitchAndFamily,
LPCTSTR lpszFace);

nHeight是字体的高度。

nWidth是字体的宽度。

nEscapement是字体的倾斜角。

nOrientation是字体的倾斜角。

fnWeight是字体的粗细。

fdwItalic是字体是否斜体。

fdwbUnderline是字体是否有下划线。

fdwStrikeOut是字体是否有删除线。

fdwCharSet是字体使用的字符集。

fdwOutPrecision是指定如何选择合适的字体。

fdwClipPrecision是用来确定裁剪的精度。

fdwQuality是怎么样跟选择的字体相符合。

fdwPitchAndFamily是间距标志和属性标志。

lpszFacel是字体的名称。



http://pctanyicheng.blog.163.com/blog/static/173820242009421545768/
Eleven 2011-05-10
  • 打赏
  • 举报
回复
CPaintDC dc(this);

CFont* pFont = GetFont();
ASSERT(pFont);
LOGFONT lf = {0};
pFont->GetLogFont(&lf);
pFont->DeleteObject();
lf.lfEscapement = 2700;

HFONT hFont = CreateFontIndirect(&lf);
ASSERT(hFont);
HFONT hOldFont = (HFONT)dc.SelectObject(hFont);
CString str(_T("123456789"));

dc.TextOut(200, 100, str);
dc.SelectObject(hOldFont);
DeleteObject(hFont);
lanlandetian 2011-05-10
  • 打赏
  • 举报
回复
Escapement:设定字符串底线与水平线的夹角,夹角是以0.1度为单位。   
Orientation:设定每一个字符的底线与水平线的夹角,夹角是以0.1度为单位。

设置Escapement

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧