欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    图形设备接口及绘图.ppt

    • 资源ID:6558729       资源大小:262.50KB        全文页数:66页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图形设备接口及绘图.ppt

    3 Windows 图形设备接口及绘图,1.响应WM_PAINT消息2.图形设备接口(GDI)3.使用设备描述表3.获取设备描述表句柄5.CDC及其派生类6.使用CDC成员函数绘制文本7.使用CDC成员函数绘制图形8.正确使用GDI对象9.设备坐标与逻辑坐标10.OpenGL绘图,实验作业,习题2,3,4,WM_PAINT消息的产生 无效矩形 打开一个窗口改变窗口大小移动窗口切换窗口最小化、最大化窗口调用InvalidateRect函数调用UpdateWindow函数,2.响应WM_PAINT消息 OnPaint,3.1 响应WM_PAINT消息,3.2 图形设备接口(GDI),1 图形设备接口提供专门的数据结构即设备描述表(DC)和对DC操作的绘图函数。2 设备描述表(DC)用于代表图形输出设备如显示屏、打印机;3 设备无关性利用GDI,所有的绘图操作都对设备描述表而不是具体的物理设备。,设备描述表,一种专门用于代表图形输出设备(如屏幕、打印机和绘图仪等)的数据结构画布绘图工具(设备描述表属性)使用句柄(HDC)访问设备描述表 设置设备描述表属性 绘制图形和文本,设备描述表属性,GDI对象,画笔画刷字体位图裁剪区,case WM_PAINT:hdc=BeginPaint(hWnd,(1)获取设备描述表句柄(2)设置设备描述表属性(3)调用绘图函数绘图(4)释放设备描述表,3.3 使用设备描述表绘图,1.BeginPaint和EndPaint函数(1)BeginPaint function准备在窗口绘图获得代表窗口的设备描述表句柄把有关绘图的信息放到PAINTSTRUCT 结构变量中。响应WM_PAINT消息绘图,必须调用该函数获取设备描述表句柄。,3.4 获取窗口设备描述表句柄,HDC BeginPaint(HWND hwnd,/handle to window LPPAINTSTRUCT lpPaint/pointer to structure for paint information);,函数原型:,PAINTSTRUCT typedef struct tagPAINTSTRUCT HDC hdc;BOOL fErase;RECT rcPaint;BOOL fRestore;BOOL fIncUpdate;BYTE rgbReserved32;PAINTSTRUCT,标志对指定窗口的绘图结束释放设备描述表句柄必须与BeginPaint函数成对调用函数原型,BOOL EndPaint(HWND hWnd,CONST PAINTSTRUCT*lpPaint);,(2)EndPaint function,2.GetDC和RealeaseDC函数,(1)GetDC function获取窗口设备描述表句柄用于响应非WM_PAINT消息绘图。函数原型:HDC GetDC(HWND hWnd);,(2)ReleaseDC function 释放设备描述表句柄必须与GetDC函数成对调用函数原型:int ReleaseDC(HWND hWnd,/handle to window HDC hDC/handle to device context);,3.5 CDC及其派生类CDC:封装了所有与设备描述表有关的数据和操作。绘图函数:Ellipse()文本输出:TextOut()设置设备描述表属性:SelectObject(),SetTextColor()数据成员m_hdc:设备描述表句柄。,CPaintDC:construction CWnd:BeginPaint destruction CWnd:EndPaintCClientDC:construction CWnd:GetDC destruction CWnd:ReleaseDCCWindowDC GetWindowDC ReleaseDC,3.6 GDI对象与CGDIObject类,GDI对象与句柄使用GDI对象使用CGDIObject类,GDI对象与句柄,使用GDI对象基本规则(1)创建对象(2)用SelectObject函数把新创建的对象选入设备描述表,并保留原对象(3)完成绘图函数的调用后,把旧对象选入设备描述表,置换出创建的对象(4)删除创建的对象,由 DeleteObject函数完成,case WM_PAINT:hdc=BeginPaint(hWnd,使用CGDIObject类,数据成员m_hObjectAttach函数 Detach函数派生类:CPen、CBrush、CFont、CBitmap、CPallete和CRgn类,逻辑坐标系TextOut(hdc,x,y,szBuffer,nLength)设备坐标系屏幕坐标系 窗口坐标系 窗口工作区坐标系视口(设备坐标)与窗口(逻辑坐标),3.7设备坐标与逻辑坐标,映像模式 定义了逻辑坐标与设备坐标的转换 CDC:SetMapMode();,窗口原点和视口原点调整逻辑坐标的原点窗口限度和视口限度调整逻辑坐标轴的方向和单位逻辑坐标与设备坐标的转换公式xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrg;yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+xViewOrg;,设置逻辑坐标系的原点SetViewportOrgEx函数BOOL SetViewportOrgEx(HDC hdc,/设备描述表句柄 int X,/使用设备单位,视口原点的X坐标值 int Y,/使用设备单位,视口原点的Y坐标值 LPPOINT lpPoint/指向POINT结构变量,存放原始的视口原点坐标);SetViewportOrgEx(hdc,cx/2,cy/2,NULL);,SetWindowOrgExBOOL SetWindowOrgEx(HDC hdc,/设备描述表句柄 int X,/使用逻辑单位,窗口原点的X坐标值 int Y,/使用逻辑单位,窗口原点的Y坐标值 LPPOINT lpPoint/指向POINT结构变量,存放原始的窗口原点坐标)SetWindowOrgEx(hdc,-cx/2,-cy/2,NULL);,1.设置映射方式 MM_ANISOTROPIC,MM_ISOTROPIC(做适当调整)2.设置窗口限度,SetWindowExt()BOOL SetWindowExtEx(HDC hdc,/设备描述表句柄 int nXExtent,/新设置的水平方向窗口限度 int nYExtent,/新设置的垂直方向窗口限度 LPSIZE lpSize/原始窗口限度);,任意逻辑坐标系的设置,3.设置视口限度BOOL SetViewportExtEx(HDC hdc,/设备描述表句柄 int nXExtent,/新设置的水平方向视口限度 int nYExtent,/新设置的垂直方向视口限度 LPSIZE lpSize/原始视口限度);,坐标系的转换,DPToLP()LPToDP()ClientToScreen()ScreenToClient(),3.8 使用CDC类绘制图形,绘制点和线COLORREF SetPixel(POINT point,COLORREF crColor);CPoint MoveTo(POINT point);BOOL LineTo(POINT point);BOOL Arc(LPCRECT lpRect,POINT ptStart,POINT ptEnd);BOOL AngleArc(int x,int y,int nRadius,float fStartAngle,float fSweepAngle);,BOOL Polyline(LPPOINT lpPoints,int nCount);BOOL PolyPolyline(const POINT*lpPoints,const DWORD*lpPolyPoints,int nCount);BOOL PolyBezier(const POINT*lpPoints,int nCount);,绘制封闭图形BOOL Ellipse(LPCRECT lpRect);BOOL Rectangle(LPCRECT lpRect)BOOL RoundRect(LPCRECT lpRect,POINT point);BOOL Pie(LPCRECT lpRect,POINT ptStart,POINT ptEnd);BOOL Polygon(LPPOINT lpPoints,int nCount);BOOL PolyPolygon(LPPOINT lpPoints,LPINT lpPolyCounts,int nCount);,CPen类和画笔,(1)调用带参数的构造函数创建GDI画笔对象,例如:Cpen m_Pen(PS_SOLID,1,RGB(0,0,255);(2)先调用缺省构造函数创建CPen对象,然后调用Indirect函数创建GDI画笔对象,例如:Cpen m_Pen;LOGPEN logpen;logpen.lopnStyle=PS_SOLID;/画笔样式 logpen.lopnWidth=1;/画笔宽度 logpen.lopnColor=RGB(0,0,255);m_Pen.CreatePenIndirect(,1画刷和CBrush类,LOGBRUSH的结构定义如下:typedef struct tagLOGBRUSH/lb UINT lbStyle;COLORREF lbColor;LONG lbHatch;LOGBRUSH;,阴影线的样式:,(1)创建实心画刷使用带参数的构造函数创建CBrush brush(RGB(255,0,0);先使用缺省的构造函数创建Cbrush对象,然后调用成员函数创建画刷CBrush brush;brush.CreateSolidBrush(RGB(255,0,0),(2)创建阴影线画刷使用带参数的构造函数创建,例如:CBrush brush(HS_DIAGCROSS,RGB(0,255,0);先使用缺省的构造函数创建Cbrush对象,然后调用成员函数创建画刷。如:CBrush brush;brush.CresteHatchBrush(HS_DIAGCROSS,RGB(0,255,0);,(3)创建位图画刷准备一个位图对象CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP1);使用CBrush类带参数的构造函数创建位图画刷,例如:CBrush brush(,1TextOut 2DrawText-在指定矩形区域以一定格式输出字符串DT_BOTTOM DT_CENTERDT_LEFT DT_RIGHTDT_SINGLELINEDT_TOPDT_VCENTER,3.9 使用CDC成员函数绘制文本,文本输出函数,3.ExtTextOut函数功能:在指定位置输出字符串,并且在文本周围给矩形填充背景色。函数原型:BOOL ExtTextOut(int x,int y,UINT nOptions,LPCRECT lpRect,const CString,void CChildView:OnPaint()CPaintDC dc(this);/device context for paintingdc.SetBkColor(RGB(0,255,0);CRect rect(0,0,200,40);int array5=40,25,35,45,15;dc.ExtTextOut(10,10,ETO_CLIPPED|ETO_OPAQUE,4.TabbedTextOut函数函数功能:和TextOut()的差不多,只是它支持制表符,定义一组制表符的位置。函数原型:CSize TabbedTextOut(int x,int y,const CString,void CChildView:OnPaint()CPaintDC dc(this);/device context for paintingint array3=80,140,200;dc.TabbedTextOut(0,0,CString(hellothowtaretyou),0,NULL,0);dc.TextOut(0,180,CString(hellothowtaretyou);,1.SetTextAlignTA_BASELINETA_BOTTOMTA_TOPTA_CENTERTA_LEFTTA_RIGHT,文本格式控制,2.SetTextCharacterExtra函数功能:设置字符间距函数原型:int SetTextCharacterExtra(int nCharExtra);参数说明:nCharExtra为添加的空白数(逻辑单位),3.SetTextJustification函数功能:设置词间距函数原型:int SetTextJustification(int nBreakExtra,int nBreakCount);参数说明:nBreakExtra 为所有空格添加的空白数(逻辑单位);nBreakCount 为一行字符串中的空格数。,GetTextExtent函数函数原型:CSize GetTextExtent(const CString&str)函数功能:返回输出字符串str所占用的显示空间(逻辑单位),void CChildView:OnPaint()CPaintDC dc(this);dc.SetTextAlign(TA_RIGHT);dc.TextOut(100,20,CString(right aligned);dc.SetTextAlign(TA_LEFT);dc.TextOut(100,60,CString(left aligned);int oldextra=dc.SetTextCharacterExtra(5);dc.TextOut(100,100,CString(left aligned and add 5 extra);,CSize size=dc.GetTextExtent(CString(left aligned and add 5 extra and justified);CRect rect;GetClientRect(,3.6.3 获取文本尺寸,1.GetTextMetrics2.GetTextExtentPoint,typedef struct tagTEXTMETRIC LONG tmHeight;LONG tmAscent;LONG tmDescent;LONG tmInternalLeading;LONG tmExternalLeading;LONG tmAveCharWidth;LONG tmMaxCharWidth;LONG tmWeight;TEXTMETRIC;,设置字符和背景颜色,(1)SetTextColor函数(2)SetBKColor函数,CFont类与字体,Windows字体栅格型(Raster)矢量型(Vector)TrueType字体要素字型(字体名称)字型样式(字体样式)大小(从低端到顶端的距离),获取字体尺寸信息,GetTextMetrics函数 BOOL GetTextMetrics(LPTEXTMETRIC lptm),typedef struct tagTEXTMETRIC int tmHeight;int tmAscent;int tmDescent;int tmInternalLeading;int tmExternalLeading;int tmAveCharWidth;int tmMaxCharWidth;int tmWeight;,BYTE tmItalic;BYTE tmUnderlined;BYTE tmStruckOut;BYTE tmFirstChar;BYTE tmLastChar;BYTE tmDefaultChar;BYTE tmBreakChar;BYTE tmPitchAndFamily;BYTE tmCharSet;int tmOverhang;int tmDigitizedAspectX;int tmDigitizedAspectY;TEXTMETRIC;,使用CFont类创建字体,构造CFont对象调用成员函数创建字体对象CreateFontIndirect函数函数原型:BOOL CreateFontIndirect(const LOGFONT*lpLogFont);参数说明:lpLogFont就是LOGFONT的指针类型。,(2)CreateFont函数函数原型:BOOL CreateFont(int nHeight,int nWidth,int nEscapement,int nOrientation,int nWeight,BYTE bItalic,BYTE bUnderline,BYTE cStrikeOut,BYTE nCharSet,BYTE nOutPrecision,BYTE nClipPrecision,BYTE nQuality,BYTE nPitchAndFamily,LPCTSTR lpszFacename);,(3)CreatePointFont函数函数原型:BOOL CreatePointFont(int nPointSize,LPCTSTR lpszFaceName,CDC*pDC=NULL);,void CChildView:OnPaint()CPaintDC dc(this);CString fontname5=“宋体”,”隶书”,”仿宋体”,”楷书”,”黑体”;LOGFONT flog;ZeroMemory(,本章重点及编程要求:,1 绘图的基本步骤2 设备环境的获取与使用3 GDI对象的使用5 逻辑坐标的设置,

    注意事项

    本文(图形设备接口及绘图.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开