windows是一个图形操作系统,其所有的图形可视效果都是通(编辑修改稿)内容摘要:
*strColor[]={红 ,绿 ,蓝 ,黄 ,紫 ,青 ,灰 }。 COLORREF rgbPenClr[]={RGB(255,0,0),RGB(0,255,0), RGB(0,0,255),RGB(255,255,0),RGB(255,0,255), RGB(0,255,255),RGB(192,192,192)}。 pDCTextOut(460,10,用不同颜色的画笔绘图 )。 for(i=0。 i7。 i++) // 用不同颜色的画笔绘图 { CPen *pPenNew=new CPen(PS_SOLID,2,rgbPenClr[i])。 // 创建画笔的另一种方法 pPenOld=pDCSelectObject(pPenNew)。 // 选择创建的画笔 pDCTextOut(460,30+20*i, strColor[i])。 pDCMoveTo(500,40+20*i)。 pDCLineTo(600,40+20*i)。 pDCSelectObject(pPenOld)。 // 恢复原来的画笔 delete pPenNew。 // 自动删除底层的 GDI对象 } } 当创建一个设备环境时 , 该设备环境自动提供了一个填充色为白色 ( WHITE_BRUSH) 的缺省画刷。 与画笔一样 , 也可以利用 MFC画刷类 CBrush创建自己的画刷 , 用于填充图形的绘制。 画刷有三种基本类型:纯色画刷 、 阴影画刷和图案画刷 , CBrush类提供了多个不同重载形式的构造函数。 以下创建三种不同类型的画刷: CBrush brush1(RGB(255,0,0))。 // 创建纯色画刷 CBrush brush2(HS_DIAGCROSS, RGB(0,255,0))。 // 创建阴影画刷 CBrush brush3(amp。 bmp)。 // 创建图案画刷 使用画刷 创建画刷也可先构造一个没有初始化的 CBrush类画刷对象 , 然后调用 CBrush类的初始化成员函数创建定制的画刷工具。 CBrush类提供的常用创建函数有: CreateSolidBrush()用指定的颜色创建一个纯色画刷; CreateHatchBrush()用指定的阴影样式和颜色创建一个阴影画刷; CreatePatternBrush()用位图创建一个图案画刷; CreateSysColorBrush()用系统默认颜色创建一个指定阴影样式的画刷。 如下代码创建了一个填充色为红色 、 图案为垂直相交阴影线的画刷: CBrush BrushNew。 (HS_CROSS, RGB(255, 0, 0))。 1. 建立一个基于对话框的应用程序 UseBrush, 为对话框类 CUseBrushDlg添加一个 CBrush类型的成员变量 m_BrushBkClr。 在对话框初始化成员函数OnInitDialog()中创建一个自定义颜色的画刷。 BOOL CUseBrushDlg::OnInitDialog() { . . . . . . // TODO: Add extra initialization here (RGB(0,0,255))。 // 创建一个蓝色画刷 return TRUE。 // return TRUE unless you set the focus . . . } 例 编写一个对话框应用程序,并重新设置对话框的背景色。 2. 利用 ClassWzard为对话框类 CUseBrushDlg添加WM_CTLCOLOR的消息处理函数 , 返回用户自己创建的画刷 m_BrushBkClr。 HBRUSH CUseBrushDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { //HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor)。 // 不使用缺省的画刷 // TODO: Return a different brush if the default . . . return m_BrushBkClr。 } Windows预定义了一些简单风格的 GDI对象,用户使用这些 GDI对象时,无需自己创建它们,可以直接将它们选入当前的设备环境,这些 GDI对象称作为 堆( Stock) 对象。 堆对象包括堆画笔、堆画刷和堆字体等。 通过调用成员函数 CDC::SelectStockObject()可以选择一个堆对象绘图工具,以下代码将堆画笔和堆画刷作为当前的绘图工具: pPenOld=(CPen*) pDCSelectStockObject(NULL_PEN)。 // 使用堆画笔对象 pBrhOld=(CBrush*) pDCSelectStockObject(LTGRAY _BRUSH)。 // 使用堆画刷对象 使用 GDI堆对象 堆画笔、画刷的样式及说明 样 式 说 明 样 式 说 明 BLACK_PEN 黑色画笔 WHITE_PEN 白色画笔 NULL_PEN 空画笔 BLACK_BRUSH 黑色画刷 WHITE_BRUSH 白色画刷 NULL_BRUSH 空画刷 GRAY_BRUSH 灰色画刷 DKGRAY_BRUSH 深灰色画刷 LTGRAY_BRUSH 浅灰色画刷 HOLLOW_BRUSH 虚画刷 也可以利用 CGdiObject::CreateStockObject()将GDI对象设置成指定的堆对象,这时需要首先声明一个 GDI对象,最后还需要调用函数 SelectObject()将与堆对象关联的 GDI对象选入当前的设备环境,如下代码所示: CBrush *pBrhOld, BrhNew。 (LTGRAY_BRUSH)。 // 设置堆画刷对象 pBrhOld= pDCSelectObject(amp。 BrhNew)。 利用 MFC AppWizard向导创建一个 SDI应用程序UseStock, 利用 ClassWizard为类 CUseStockView添加 WM_PAINT消息处理函数 OnPaint(): void CUseStockView::OnPaint() { CPaintDC dc(this)。 // device context for painting // TODO: Add your message handler code here CPen *pPenOld, PenNew。 CBrush *pBrhOld, BrhNew。 pPenOld=(CPen*)(BLACK_PEN)。 // 使用堆画笔对象 例 编写一个 SDI应用程序,使用堆画笔和堆画刷绘制图形。 pBrhOld=(CBrush*)(GRAY_BRUSH)。 // 使用堆画刷对象 (100,100,300,300)。 (NULL_PEN)。 // NULL_PEN用于绘制无边界的填充图形 (amp。 PenNew)。 (LTGRAY_BRUSH)。 (amp。 BrhNew)。 (400,100,600,200)。 (pPenOld)。 // 恢复系统默认的 GDI对象 (pBrhOld)。 (400,210,600,310)。 // Do not call CView::OnPaint() for painting messages } 生成设备环境 、 设置绘图属性和选择绘图工具后 , 就可以开始绘制不同形状的几何图形 ,Windows中可以绘制的基本几何图形包括点 、直线 、 曲线 、 矩形 、 椭圆 、 弧 、 扇形 、 弦形和多边形等。 GDI为提供了绘制基本图形的成员函数 , 这些函数封装在 MFC的 CDC类中。 绘图函数使用的坐标都是逻辑坐标。 绘制基本图形 函 数 功 能 SetPixel 用指定的颜色在指定的坐标画一个点 MoveTo 移动当前位置到指定的坐标 , 函数返回以前位置的坐标。 LineTo 从当前位置到指定位置画一条直线 Polyline 从当前位置开始 , 根据函数参数绘制多条折线。 PolyBezier 根据两个端点和两个控制点绘制贝济埃 ( Bezier) 曲线。 Rectangle 根据指定的左上角和右下角坐标绘制一个矩形 RoundRect 绘制一个圆角矩形。 Ellipse 根据指定的矩形绘制一个内切椭圆 Arc 根据指定的矩形绘制内切椭圆上的一段弧边 ArcTo 该函数功能与 Arc函数相同 , 不同之处在于画弧成功后 Pie 绘制扇形 Chord 绘制弦形 , 弦形是一条椭圆弧和其对应的弦所组成的封闭图形。 Polygon 根据两个或两个以上顶点绘制一个多边形 DrawIcon 在指定位置画一个图标 , 如果成功函数返回非 0, 否则返回 0。 利用 MFC AppWizard建立一个 SDI应用程序 ,在 OnDraw()函数中添加如下程序代码: void CMyGraphView::OnDraw(CDC* pDC) { CMyGraphDoc* pDoc = GetDocument()。 ASSERT_VALID(pDoc)。 // TODO: add draw code for native data here for(int xPos=20。 xPos100。 xPos+=10) pDCSetPixel(xPos,30,RGB(0,0,0))。 // 绘制像素点 POINT polylpt[5]={{10,100},{50,60},{120,80}, {80,150},{30,130}}。 pDCPolyline(polylpt,5)。 // 绘制五条折线 例 编写一个绘图程序,利用表 86中的成员函数绘制几种常见的几何图形。 POINT polybpt[4]={{150,160},{220,60},{300,180}, {330,20}}。 pDCPolyBezier(polybpt,4)。 // 绘制贝济埃曲线 CBrush *pBrhOld。 pBrhOld=(CBrush*)pDCSelectStockObject( LTGRAY_BRUSH)。 // 使用浅灰色堆画刷 pDCRoundRect(400,30,550,100,20,20)。 // 绘制圆角矩形 pDCArc(20,200,200,300,200,250,20,200)。 // 绘制椭圆弧 pDCPie(220,200,400,380,380,270,240,2。windows是一个图形操作系统,其所有的图形可视效果都是通(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。