实现文字旋转变色效果--上位机VC
实现文字旋转变色效果--上位机VC
功能展示
程序上文字都是规规矩矩的水平或垂直显示,有时想文字任意角度的显示,就得额外用代码实现,当前例程就实现文字任意角度任意颜色的显示功能,效果如图,点击<显示旋转文字>按钮就可每15度显示文字,例程将按钮的点击函数调用于OnPaint()函数里,程序一运行就可显示文字 要点提示 在窗口文字的显示可以用窗口设备上下文类CClientDC的函数TextOut()实现,文字输出时使用的是默认的LOGFONT结构体,要更改文字 的角度我们只需自行准备一LOGFONT结构体,设置其成员变量lfEscapement为我们想要的角度,利用Cfont进行创建,再用CClientDC类的函数SelectObject选进就可;
实现功能
1.新建基于对话框的应用程序 2.拖拽一按钮控件,双击控件,关联按钮的点击函数,在函数内实现文字 旋转 - void CGkbc8Dlg::OnButton1()
- {
- CClientDC dc(this);
- dc.SetBkMode (TRANSPARENT);//背景模式 为透明
- byte r=10;byte g=10;byte b=10;
- //<>
- LOGFONT stFont; //字体定义结构
- memset(&stFont, 0, sizeof(LOGFONT));
- stFont.lfHeight=MulDiv(14, -dc.GetDeviceCaps(LOGPIXELSY), 72);
- stFont.lfWeight=FW_NORMAL;
- stFont.lfClipPrecision=CLIP_LH_ANGLES;
- strcpy (stFont.lfFaceName, "Arial");
- //<>
- CFont font;
- CRect rc;
- GetClientRect(&rc);//要显示的客户区域
- CString sText("oooo...I am only a test!");//要显示的文字
- for (int nAngle=0; nAngle<3600; nAngle+=150)//每隔15度输出字符串
- {
- stFont.lfEscapement=nAngle;//设定新的旋转角度
- font.CreateFontIndirect(&stFont);//创建字体并选进设备场景
- CFont* pOldFont=dc.SelectObject(&font);
- r+=20;g+=3;b+=1;
- dc.SetTextColor (RGB (r,g,b));//文字颜色为红
- dc.TextOut(rc.left + rc.Width()/2,rc.top + rc.Height()/2,sText);//输出字体
- dc.SelectObject(pOldFont);//原来字体
- font.DeleteObject();
- }
- }
复制代码
3.点击一次按钮,显示一次文字,可在OnPaint()函数中调用按钮函数,实现自动绘制旋转文字 - void CGkbc8Dlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // device context for painting
- SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
- // Center icon in client rectangle
- int cxIcon = GetSystemMetrics(SM_CXICON);
- int cyIcon = GetSystemMetrics(SM_CYICON);
- CRect rect;
- GetClientRect(&rect);
- int x = (rect.Width() - cxIcon + 1) / 2;
- int y = (rect.Height() - cyIcon + 1) / 2;
- // Draw the icon
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CDialog::OnPaint();
- }
- OnButton1() ;
- }
复制代码我们来演示下功能实现的整个过程 如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|