毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

图形图像处理论文 第3页

更新时间:2009-3-26:  来源:毕业论文
图形图像处理论文 第3页
8.6 图形元素的绘制
所谓图形元素主要是指点、直线、曲线和文字等。在Visual C++的MFC的设备环境类CDC中提供了相应的成员函数来完成这些基本图形元素的绘制工作。
8.6.1 画点
利用CDC类的成员函数SetPixel来完成点的绘制工作,该函数的原型为:
COLORREF SetPixel( int x, int y, COLORREF crColor );
COLORREF SetPixel( POINT point, COLORREF crColor );
其中,参数x、y及point均表示逻辑坐标系下所要绘制的点的坐标值,参数crColor表示要绘制的点的颜色。该函数的返回值为实际绘制点的RGB颜色值。

8.6 图形元素的绘制
8.6.2 画直线
利用CDC类的成员函数LineTo来完成直线的绘制工作,该函数的原型为:
BOOL LineTo( int x, int y );
BOOL LineTo( POINT point );
其中,参数x、y和point是指要画直线的终点端点坐标值。如果绘制直线成功,则该函数返回非零值;否则,返回0。
该函数的功能是从当前点为直线的起始点、以(x,y)或point为终点画一条直线。
还有一个与画线有关的CDC类的成员函数MoveTo,该函数的原型为:
CPoint MoveTo( int x, int y );   
CPoint MoveTo( POINT point );   
8.6 图形元素的绘制
8.6.3 画矩形
利用CDC类的成员函数Rectangle来完成矩形的绘制工作,该函数的原型为:
BOOL Rectangle( int x1, int y1, int x2, int y2 );
BOOL Rectangle( LPCRECT lpRect );
其中,参数x1、y1是要绘制的矩形左上角的坐标,x2、y2是矩形右下角的坐标。参数lpRect指定要绘制的矩形区域。

8.6 图形元素的绘制
8.6.4 画圆角矩形
利用CDC类的成员函数RoundRect来完成圆角矩形的绘制工作,该函数的原型为:
BOOL RoundRect( int x1, int y1, int x2, int y2, int x3, int y3 );
BOOL RoundRect( LPCRECT lpRect, POINT point );
其中,参数x1、y1指定圆角矩形左上角的坐标,参数x2、y2指定圆角矩形右下角的坐标,x3表示用来画圆角的椭圆的宽度,y3表示该椭圆的高度。
8.6.5 画扇形
利用CDC类的成员函数Pie来完成扇形的绘制工作,该函数的原型为:
BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );
BOOL Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd );
各参数的含义可参见圆角矩形。

8.6 图形元素的绘制
 8.6.6 画多边形
利用CDC类的成员函数Polygon来完成多边形的绘制工作,该函数的原型为:
BOOL Polygon( LPPOINT lpPoints, int nCount );
其中,参数lpPoints是一个指向多边形各顶点坐标的矩阵,参数nCount表示多边形的顶点总数。
8.6.7 绘制文本
利用CDC类的成员函数TextOut可完成文字的绘制输出工作,该函数的原型为:
virtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount );
BOOL TextOut( int x, int y, const CString& str );
其中,参数x、y表示输出文字的起始坐标位置,lpszString或str表示要输出的文字,nCount表示输出lpszString所指出的字符串中的字符个数。
8.6 图形元素的绘制
与文字的输出有关系的CDC类的成员函数还有:
输出文字:
virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat );
int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );
设置文字输出的颜色:
virtual COLORREF SetTextColor( COLORREF crColor );
设置文字的对齐方式:
UINT SetTextAlign( UINT nFlags );   
设置文字间输出的间隙 :       
int SetTextCharacterExtra( int nCharExtra );
8.7 在视图中交互绘图
步骤5:对消息WM_LBUTTONDOWN进行消息映射并编写消息处理函数的代码,如下所示:
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
    m_StartPoint=point;
    m_OldPoint=point;
    SetCapture();
    m_Drag=1;
    RECT Rect;
    GetClientRect(&Rect);
    ClientToScreen(&Rect);
    ::ClipCursor(&Rect);
    CView::OnLButtonDown(nFlags, point);
}

8.7 在视图中交互绘图
步骤6:按步骤五的方法向OnMouseMove()函数中添加对鼠标消息WM_MOUSEMOVE的处理,代码如下:
void CDrawView::OnMouseMove(UINT nFlags, CPoint point)
{
    ::SetCursor(m_Cursor);
    if(m_Drag)
    {
        CClientDC mydc(this);
        mydc.SetROP2(R2_NOT);
        mydc.MoveTo(m_StartPoint);
        mydc.LineTo(m_OldPoint);youerw.com
        mydc.MoveTo(m_StartPoint);
        mydc.LineTo(point);
        m_OldPoint=point;
    }
    CView::OnMouseMove(nFlags, point);
}
8.7 在视图中交互绘图
步骤7:按步骤5的方法向OnMouseUp()函数中添加对鼠标消息WM_LBUTTONUP的处理,代码如下:
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
    if(m_Drag)
    {
        m_Drag=0;
        ::ReleaseCapture();
        ::ClipCursor(NULL);
        CClientDC thedc(this);
        thedc.SetROP2(R2_NOT);
        thedc.MoveTo(m_StartPoint);
        thedc.LineTo(m_OldPoint);
        thedc.SetROP2(R2_COPYPEN);
        thedc.MoveTo(m_StartPoint);
        thedc.LineTo(point);
    }
    CView::OnLButtonUp(nFlags, point);
}
8.7 在视图中交互绘图
步骤8:编译并运行此程序,可见,当鼠标在客户区中时,鼠标光标呈十字形状,拖动鼠标可画直线。

本章小结
本章主要介绍了以下内容:
1. 设备环境(DC)的概念及常用的的几个设备环境类如CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及它们在使用方法上的区别。
2. 绘图设备类(GDI)的概念及常用的绘图设备类如CGdiObject、CPen、CBrush、Cfont和CBitmap等的对象的创建和引入到设备环境中的方法。
3. Windows下的坐标映像方式、设备方法及几种不同的坐标映像方式下的坐标转换方法。
 4. 几种常见的基本图形元素如点、直线、矩形和文字等的绘制方式及相应的CDC类的绘图函数

上一页  [1] [2] [3] 

图形图像处理论文 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。