友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

VC语言6.0程序设计从入门到精通-第35部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




        {  



              return (HCURSOR) m_hIcon;  



       }  



       void CGundongDlg::OnTimer(UINT nIDEvent)    



        {  



 ·156 ·  


…………………………………………………………Page 166……………………………………………………………

                                                                                                  第 6 章    文本和字体类  



       // TODO: Add your message handler code here and/or call default  



        DrawV();  



        DrawH();  



       CDialog::OnTimer(nIDEvent);  



}  



void CGundongDlg::DrawV()    //竖直方向滚动函数  



{  



        CRect rect;                          //每次重画区域大小  



       rect。left=10;  



       rect。right=m_str。GetLength()+rect。left+120;  



       CFont * font=GetFont();  



       LOGFONT logFont;  



       font…》GetLogFont(&logFont);  



       rect。top=Heighty;  



       rect。bottom=rect。top+logFont。lfHeight+40;  



       InvalidateRect(&rect);  



       Heighty+=logFont。lfHeight+18;              //每步向下移动距离  



       if(Heighty》=maxHeight) Heighty=15;    // 回到起始位置  



       UpdateWindow();  



}  



void CGundongDlg::DrawH()      //水平向滚动函数  



{      



        CRect rect;                            //每次重画区域大小  



       rect。top=15;  



        CFont * font=GetFont();  



       LOGFONT logFont;  



       font…》GetLogFont(&logFont);  



       rect。bottom=rect。top+logFont。lfHeight+80;  



       rect。left=WidthX…m_str。GetLength()…10;  



       rect。right=rect。left+m_str。GetLength()+150;  



       InvalidateRect(&rect);  



       if(WidthXSelectObject(&m_font);  



              pDC…》SetBkMode(TRANSPARENT);  



              int cx = 100; cy = 100;              //文本输出位置  



              CString sTemp = m_sText;  



              cx += 3;  



              cy += 3;  



              pDC…》SetTextColor(GetSysColor(COLOR_3DDKSHADOW)); // 以下先输出突出的 3D 文本  



              pDC…》TextOut(cx+2;cy…2;sTemp);  



              pDC…》TextOut(cx+2;cy+2;sTemp);  



              pDC…》SetTextColor(GetSysColor(COLOR_3DHILIGHT));  



  



              pDC…》TextOut(cx+1;cy…2;sTemp);  



              pDC…》TextOut(cx…2;cy+1;sTemp);  



              pDC…》TextOut(cx…2;cy…2;sTemp);  



              pDC…》SetTextColor(GetSysColor(COLOR_3DSHADOW));  



  



              pDC…》TextOut(cx…1;cy+1;sTemp);  



              pDC…》TextOut(cx+1;cy…1;sTemp);  



              pDC…》TextOut(cx+1;cy+1;sTemp);  



                                                                                                                       ·159 ·  


…………………………………………………………Page 169……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



                   pDC…》SetTextColor(GetSysColor(COLOR_3DLIGHT));  



        



                   pDC…》TextOut(cx;cy…1;sTemp);  



                   pDC…》TextOut(cx…1;cy;sTemp);  



                   pDC…》TextOut(cx…1;cy…1;sTemp);               



                   //然后通过路径对象将以上要输出的文本变成空心  



                // 向路径输出“汉字”  



                   pDC…》BeginPath();  



                   pDC…》TextOut(cx;cy;sTemp;8);  



                   pDC…》EndPath();  



                   //填充路径  



                   pDC…》SetPolyFillMode(WINDING); //设置填充模式  



                   pDC…》StrokeAndFillPath();//绘制路径外观  



                   pDC…》SelectObject(pOldFont);  



                     



            }  



        



      }  



       函数 pDC…》StrokeAndFillPath  用于先封闭所有的开放路径,然后用当前画刷和填充方式 

填充区域内部 。由于当前画刷是一个实心的白色画刷(WHITE_BRUSH) ,因此,文字的显示 

效果就变成了空心,同时该函数用当前画笔勾画路径的轮廓。运行结果如图 6…3 所示。  



                                                                                                               



                                         图 6…3     “3D 空心字”例程运行结果  



 ·160 ·  


…………………………………………………………Page 170……………………………………………………………

                                                                            第 6 章    文本和字体类  



6。5    本章小结  



     本章介绍了 Windows GDI 输出文本和字体的一般概念。在对 MFC 字体类 CFont 的主要 

成员属性及方法作了较为详尽的讲解的基础上,介绍了 GDI 输出文本的方法 。同时,通过两 

个例程介绍了产生“动态”字幕和“空心字”的技巧和方法。通过本章的学习,读者应能够 

学到利用类 CFont 创建自定义字体的方法以及进行多种样式文本输出的方法。  

      

      



                                                                                          ·161 ·  


…………………………………………………………Page 171……………………………………………………………

                                第 7 章    图形图像  

                                第 7 章    图形图像  



                  随着计算机技术的发展,数字图像处理,技术得到了广泛应用,如模式识别、人脸识别、 

                    /编辑等都涉及到了计算机的图形图像处理技术 。本章将为读者介绍 Visual C++ 中图 

               图像融合 

               像处理技术的相关知识,主要包括以下几个方面的内容:  

                  o  屏幕秽土的主要函数,及其调用方法;  

                  o  图形设备接口及其主要 MFC 类;  

                  o  画刷和画笔的使用。  



               7。1  绘图的基础知识  



                  在当今的操作系统中,应用最广泛的是拥有友好、美观图形界面的操作系统。因此绘图 

               成为了一项核心技术。  

                  要了解绘图的原理,首先需要知道显示设备。当前的显示设备主要包括基于阴极射线管 

               ( 

               CRT )的显示器以及液晶显示器。阴极射线管主要由电子枪,聚焦系统、加速电极,偏转系 

               统,荧光屏构成。电子枪发出高速的电子束,经过聚焦系统、加速系统和偏转系统到达荧光 

               屏的特定位置。电子束轰击荧光屏发出荧光,形成亮点。要保持显示一幅稳定的画面,必须 

               不断地发射电子束。  

                  计算机的显示功能是由图形处理器(显卡)来完成的。图形处理器是图形系统结构的重要 

               元件,是连接计算机和显示终端的纽带 。早期的图形处理器只包含简单的存储器和帧缓冲区, 

               它们实际上只起了一个图形的存储和传递作用,一切操作都必须有 CPU 来控制。现在的图形 

               处理器不单存储图形,而且能完成大部分图形函数,专业的图形卡已经具有很强的 3D  处理 

               能力,大大减轻了 CPU 的负担,提高了显示质量和显示速度。  

                  当前流行的操作系统绘图功能主要基于光栅图形学。包括基本图形(直线、圆弧、椭圆 

               弧)的扫描转换、多边形的扫描转换、区域填充、裁剪、反走样、投影、消隐等。  

                  直线是操作系统频繁绘制的基本图形元素 。在不同分辨率的显示器上,为了保证绘制出 

               的直线有良好的视觉效果,需要确定最佳逼近于该直线的一组像素,最常用的方法包括数值 

               微分法(DDA),中点画线法和 Bresenham 算法。下面简单介绍数值微分法。  



                        (x ; yP  ) (x  ; yP )     y  kx b = + 

                  已 知 过 端 点        ,        的 直 线 段 L :        , 直 线 斜 率 为 

                       0  0 0    1  1 1 



k  (y y )/(x x )  =       ,在 x 方向从 x 开始,向 x  步进,步长取 1 个像素,计算相应的 y 

         1  0   1  0                     0       1 



            y  kx b = +  ( ; x  round( ))x 

               坐标        。取像素点(            作为当前点的坐标。其他方法读者如果有兴趣可 



               以参
返回目录 上一页 下一页 回到顶部 1 2
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!