QQ登录

只需一步,快速开始

132上位机VC MFC文字的任意角度旋转

[ 复制链接 ]

132上位机VC MFC文字的任意角度旋转

132上位机VC MFC文字的任意角度旋转

132上位机VC MFC文字的任意角度旋转


功能展示

上位机程序中文字输入是常用的功能,如果输入的文字角度可任意变化,将会有很好的效果,修改十足,我们当前例程,实现输出文字角度的任意修改,效果如图;
要点提示
文字的角度可以使用VC中的Cfont字体类进行设置,然后在窗口输出文字时,用窗口的设备上下文CDC加载我们创建的Cfont字体,再输出文字,就可实现输出文本角度的任意设置了;

Cfont字体类的创建可以用CreateFont()函数,原型如下BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename );
nHeight, nWidth用于指定字体的高度和宽度,为正时,字体映射机制会根据指定的高度或宽度从字体列表中选择一种接近的字体,以该字体的单元高度或宽度为参考。为负时,字体的映射机制也会选择一种字体,这时以字体字符高度或宽度为参考。单元是在实际输出字符的上下有一些空隙,而字符是忽略了这些空隙后的单元高度; nEscapement以X横轴为参考确定文本的倾斜角度; nOrientation确定字符基线与X轴的倾斜角度; nWeight字体粗细; bItalic字体斜体, bUnderline字体下划线, cStrikeOut字体删除线; nCharSet指定字符集; nOutPrecision确定字体映射机制如何根据提供的参数选择合适的字体; nClipPrecision字体的裁减精度; nQuality字体显示品质; nPitchAndFamily字符间距和字体属性; lpszFacename 字体名称;







实现功能
1.新建基于对话框的应用程序
2.拖拽的图片控件用于设置输出的旋转文本,修改ID为IDC_RECT,类型为矩形;
3.拖拽一编辑框用于设置输出字体的任意角度,关联内容改变消息函数;
4.拖拽一按钮控件用于输出360度角度的字体;
5.添加自定义函数CGkbc8Dlg::RotateText(UINT nDegree)实现旋转字体的输出功能;

三个函数的函数体为
  1. void CGkbc8Dlg::OnChangeEdit1()
  2. {
  3.         CRect rc;
  4.         GetDlgItem(IDC_RECT)->GetClientRect(rc);
  5.         CDC* pDC = GetDlgItem(IDC_RECT)->GetDC();
  6.         pDC->FillRect(rc,&CBrush(RGB(0,0,0)));
  7.         GetDlgItem(IDC_RECT)->ReleaseDC(pDC);
  8.         RotateText(GetDlgItemInt(IDC_EDIT1));        
  9. }
  10. void CGkbc8Dlg::OnButton1()
  11. {        CRect rc;
  12.         GetDlgItem(IDC_RECT)->GetClientRect(rc);
  13.         CDC* pDC = GetDlgItem(IDC_RECT)->GetDC();
  14.         pDC->FillRect(rc,&CBrush(RGB(0,0,0)));
  15.         GetDlgItem(IDC_RECT)->ReleaseDC(pDC);
  16.         for (int i = 1;i< 360;i+=18) {RotateText(i);}
  17. }
复制代码
  1. void CGkbc8Dlg::RotateText(UINT nDegree)
  2. {
  3.         CDC* pDC = GetDlgItem(IDC_RECT)->GetDC();
  4.         pDC->SetBkMode(TRANSPARENT);
  5.         CRect rc;
  6.         GetDlgItem(IDC_RECT)->GetClientRect(rc);
  7.         pDC->SetViewportOrg(rc.Width()/2,rc.Height()/2);
  8.         
  9.         CFont Font;
  10.         Font.CreateFont(-14,-10,nDegree*10,0,600,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,
  11.                 CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_ROMAN,"宋体");
  12.         pDC->SelectObject(&Font);

  13.         nDegree=nDegree%255;
  14.         pDC->SetTextColor(RGB(255-nDegree,(255+nDegree)%255,255));
  15.         pDC->TextOut(0,0,"文字任意旋转例程");

  16. //
  17.         Font.DeleteObject();        
  18.         GetDlgItem(IDC_RECT)->ReleaseDC(pDC);
  19. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:132.上位机VC MFC文字的任意角度旋转.rar 
文件大小:127.26 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索