八宝书库 > 文学其他电子书 > VC语言6.0程序设计从入门到精通 >

第39部分

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

小说: VC语言6.0程序设计从入门到精通 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






  



              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 

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



               以参阅相关书籍。图形变换是计算机图形学中的重要内容。通过各种变换,比如旋转、镜像、 


…………………………………………………………Page 172……………………………………………………………

                                                                         第 7 章     图形图像  



平移、缩放等,可以由一个简单的图形生成复杂的图形。  



7。2  屏幕绘图的主要函数  



    在 Visual  C++环境下,可以绘制点,线,矩形,多边形,椭圆,位图以及文本等,具体 

调用格式如下。  



     1.CDC::SetPixel  



     用来设定指定点的颜色,返回指定点的颜色值。它有两种调用形式,函数原型如下:  



    COLORREF SetPixel( int x ; int y ; COLORREF crColor );  



    COLORREF SetPixel( POINT point ; COLORREF crColor );  



    o  x   指定点的 x 坐标。  

    o  y   指定点的 y 坐标。  

    o  crColor 将要绘制颜色。  

    o  point      指定点的坐标  



    2 .CDC::MoveTo  



     用来移动当前点到指定点,返回当前点的坐标。它有两种调用形式,函数原型如下:  



    CPoint MoveTo( int x; int y );  



    CPoint MoveTo( POINT point  );  



     参数  

    o  x   新位置的 x 坐标。  

    o  y   新位置的 y 坐标。  

    o  point      新位置的坐标 



    3 .CDC::LineTo 



     用来绘制一条从当前点到指定点的直线,返回是否绘制成功的标志。它有两种调用形式, 

函数原型如下:  



    CPoint LineTo( int x ; int y );  



    CPoint LineTo( POINT point  );  



     参数  

    o  x   指定点的 x 坐标。  

    o  y   指定点的 y 坐标。  

    o  point      指定点的坐标 



    4 .CDC::Rectangle 



     用来绘制一个矩形,返回是否绘制成功的标志。它有两种调用形式,函数原型如下:  



    BOOL Rectangle( int x1; int y1 ; int x2; int y2 );  



    BOOL Rectangle( LPCRECT lpRect );  



                                                                                   ·163 ·  


…………………………………………………………Page 173……………………………………………………………

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



    参数  

    o  x 1   矩形的左上角 x 坐标。  

    o  y 1   矩形的左上角 y 坐标。  

    o  x2    矩形的右下角 x 坐标。  

    o  y 2   矩形的右下角 y 坐标。  

    o  lpRect  矩形对象的指针  



    5 .CDC::PolyLine 



    根据一组多边形顶点绘制多边形,返回是否绘制成功的标志。函数原型如下: 



    BOOL Polyline( LPPOINT lpPoints; int nCount );  



    参数  

    o  lpPoints  多边形顶点的点结构数组指针。  

    o  nCount 数组中点的个数  



      



    6 .CDC::PolyBezier 



    用来绘制一条 Bezier  曲线,返回是否绘制成功的标志。函数原型如下:  



    BOOL PolyBezier ( LPPOINT lpPoints; int nCount );  



    参数  

    o  lpPoints  包含控制点的点结构数组指针。  

    o  nCount 数组中点的个数  



    7 .CDC::Ellipse  



    用来绘制椭圆,返回是否绘制成功的标志。它有两种调用形式,函数原型如下: 



    BOOL Ellipse( int x1; int y1 ; int x2 ; int y2 );  



    BOOL Ellipse( LPCRECT lpRect );  



    参数  

    o  x1    椭圆包围矩形的左上角 x 坐标。  

    o  y1    椭圆包围矩形的左上角 y 坐标。  

    o  x2    椭圆包围矩形的右下角 x 坐标。  

    o  y2    椭圆包围矩形的右下角 y 坐标。  

    o  lpRect  椭圆包围矩形的指针  



    8.CDC::BitBlt  



    用于从源设备复制一幅  BMP             图像到目标设备,返回是否绘制成功的标志。函数原型如 

下:  



    BOOL BitBlt( int x ; int y ; int nWidth; int nHeight; CDC* pSrcDC ; int xSrc ; int ySrc ; DWORD dwRop );  



    参数  

    o  x   目标矩形区域的左上角x 坐标。  



 ·164 ·  


…………………………………………………………Page 174……………………………………………………………

                                                             第 7 章     图形图像  



    o  y   目标矩形区域的左上角y 坐标。  

    o  nWidth  目标矩形区域和源图像的宽度。  

    o  nHeight    目标矩形区域和源图像的高度。  

    o  pSrcDC  源设备上下的指针。  

    o  xSrc    源矩形区域的左上角 x 坐标。  

    o  ySrc    源矩形区域的左上角 y 坐标。  

    o  dwRop 光栅操作的类型,包括如下类型:  

        BLACKNESS     将输出变为黑色。  

        DSTINVERT     将目标图像反色。  

        MERGECOPY         将模式和源图像做与运算。  

        MERGEPAINT        将源图像取反后与目标图像做或运算。  

        NOTSRCCOPY        复制取反后的源图像到目标图像。  

        NOTSRCERASE   将目标图像与源图像做或运算后取反。  

        PATCOPY           复制模式到目标图像。  

        PATINVERT     将目标图像与模式做异或运算。  

        PATPAINT          将源图像取反后与模式做或运算,将这个运算的结果与目标 

          图像做或运算。  

        SRCAND            将目标图像与源图像做与运算。  

        SRCCOPY           复制源图像到目标图像。  

        SRCERASE      将目标图像取反后与源图像做与运算。  

        SRCINVERT     将目标图像与源图像做异或运算。  

        SRCPAINT      将目标图像与源图像做或运算。  

        WHITENESS     将输出变为白色  



    9 .CDC::TextOut  



    用来绘制输出文本,返回是否绘制成功的标志。它有两种调用形式,函数原型如下:  



    virtual BOOL TextOut( int x ; int y ; LPCTSTR lpszString; int nCount );  



    BOOL TextOut( int 

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的