QQ登录

只需一步,快速开始

实现文字旋转变色效果--上位机VC

[ 复制链接 ]

实现文字旋转变色效果--上位机VC

实现文字旋转变色效果--上位机VC


实现文字旋转变色效果--上位机VC

功能展示
程序上文字都是规规矩矩的水平或垂直显示,有时想文字任意角度的显示,就得额外用代码实现,当前例程就实现文字任意角度任意颜色的显示功能,效果如图,点击<显示旋转文字>按钮就可每15度显示文字,例程将按钮的点击函数调用于OnPaint()函数里,程序一运行就可显示文字
要点提示
在窗口文字的显示可以用窗口设备上下文类CClientDC的函数TextOut()实现,文字输出时使用的是默认的LOGFONT结构体,要更改文字 的角度我们只需自行准备一LOGFONT结构体,设置其成员变量lfEscapement为我们想要的角度,利用Cfont进行创建,再用CClientDC类的函数SelectObject选进就可;



实现功能

1.新建基于对话框的应用程序
2.拖拽一按钮控件,双击控件,关联按钮的点击函数,在函数内实现文字 旋转
  1. void CGkbc8Dlg::OnButton1()
  2. {
  3.         CClientDC  dc(this);
  4.         dc.SetBkMode (TRANSPARENT);//背景模式 为透明
  5.         byte r=10;byte g=10;byte b=10;
  6. //<>
  7.         LOGFONT stFont; //字体定义结构
  8.         memset(&stFont, 0, sizeof(LOGFONT));
  9.         stFont.lfHeight=MulDiv(14, -dc.GetDeviceCaps(LOGPIXELSY), 72);
  10.         stFont.lfWeight=FW_NORMAL;
  11.         stFont.lfClipPrecision=CLIP_LH_ANGLES;
  12.         strcpy (stFont.lfFaceName, "Arial");
  13. //<>
  14.         CFont font;
  15.         CRect rc;
  16.         GetClientRect(&rc);//要显示的客户区域
  17.         CString sText("oooo...I am only a test!");//要显示的文字
  18.         for (int nAngle=0; nAngle<3600; nAngle+=150)//每隔15度输出字符串
  19.         {       
  20.                 stFont.lfEscapement=nAngle;//设定新的旋转角度
  21.                 font.CreateFontIndirect(&stFont);//创建字体并选进设备场景
  22.                 CFont* pOldFont=dc.SelectObject(&font);       
  23.                 r+=20;g+=3;b+=1;
  24.                 dc.SetTextColor (RGB (r,g,b));//文字颜色为红
  25.                 dc.TextOut(rc.left + rc.Width()/2,rc.top + rc.Height()/2,sText);//输出字体       
  26.                 dc.SelectObject(pOldFont);//原来字体
  27.                 font.DeleteObject();
  28.         }
  29. }
复制代码

3.点击一次按钮,显示一次文字,可在OnPaint()函数中调用按钮函数,实现自动绘制旋转文字
  1. void CGkbc8Dlg::OnPaint()
  2. {
  3.         if (IsIconic())
  4.         {
  5.                 CPaintDC dc(this); // device context for painting

  6.                 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

  7.                 // Center icon in client rectangle
  8.                 int cxIcon = GetSystemMetrics(SM_CXICON);
  9.                 int cyIcon = GetSystemMetrics(SM_CYICON);
  10.                 CRect rect;
  11.                 GetClientRect(&rect);
  12.                 int x = (rect.Width() - cxIcon + 1) / 2;
  13.                 int y = (rect.Height() - cyIcon + 1) / 2;

  14.                 // Draw the icon
  15.                 dc.DrawIcon(x, y, m_hIcon);
  16.         }
  17.         else
  18.         {
  19.                 CDialog::OnPaint();
  20.         }
  21.         OnButton1() ;
  22. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

查看状态:已购买或有权限

您的用户组是:游客

文件名称:实现文字旋转变色效果--上位机VC.txt 
文件大小:48 Bytes 
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

回复

使用道具 举报

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