欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    win32内核编程_06.pdf

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

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

    win32内核编程_06.pdf

    win32_06.txt=第六课 绘图=一、绘图基础-1.设备上下文(Device Context,DC)HDC-设备上下文句柄,表示绘图设备。HDC hDC=BeginPaint(hWnd,.);在这个窗口里绘图HDC hDC=BeginPaint(hPrinter,.);在这个打印机上绘图TextOut(hDC,.);在这里写字Ellipse(hDC,.);在这里画圆EndPaint(hWnd,.);/结束绘图2.图形设备接口(Graphics Device Interface,GDI)Win32提供的绘图APIs,封装在gdi32.dll动态链接库中。二、颜色空间-1.计算机三原色:红(R)、绿(G)、蓝(B)R:0-255G:0-255B:0-2552.颜色深度:位/像素 1位/像素:2种颜色,黑白图 4位/像素:16种颜色,黑、白、深/浅灰、深/浅红、深/浅绿、深/浅蓝、深/浅黄、深/浅青、深/浅洋红 8位/像素:256种颜色,调色板16位/像素:R5-G5-B6,增强色24位/像素:R8-G8-B8,真彩色32位/像素:A8-R8-G8-B8,增加透明度第 1 页win32_06.txt3.颜色处理1)COLORREF-DWORD-unsigned long-32位无符号整型-0 x00BBGGRRCOLORREF cr=0 x00000000;/黑色COLORREF cr=0 x000000FF;/纯红COLORREF cr=0 x0000FF00;/纯绿COLORREF cr=0 x00FF0000;/纯蓝2)颜色组合COLORREF cr=RGB(255,0,0);/纯红3)颜色分解GetRValue/GetGValue/GetBValueBYTE byRed=GetRValue(cr);/获取红色分量BYTE-unsigned char三、点-1.获取点的颜色COLORREF GetPixel(HDC hdc,/设备上下文句柄 int nXPos,/像素点水平坐标 int nYPos /像素点垂直坐标);返回像素点的颜色。2.设置点的颜色COLORREF SetPixel(HDC hdc,/设备上下文句柄 int X,/像素点水平坐标 int Y,/像素点垂直坐标 COLORREF crColor/期望颜色);成功返回该像素点的实际颜色(有可能与期望颜色不同,但尽量接近),失败返回-1。四、直线-1.从当前点移动到目标点,目标点成为新的当前点BOOL MoveToEx(第 2 页win32_06.txt HDC hdc,/设备上下文句柄 int X,/目标点水平坐标 int Y,/目标点垂直坐标 LPPOINT lpPoint/移动前的当前点(输出参数),可为NULL);成功返回TRUE,失败返回FALSE。2.从当前点到目标点画直线,目标点成为新的当前点BOOL LineTo(HDC hdc,/设备上下文句柄 int nXEnd,/目标点水平坐标 int nYEnd /目标点垂直坐标);成功返回TRUE,失败返回FALSE。五、(椭)圆弧-1.画弧BOOL Arc(HDC hdc,/设备上下文句柄 int nLeftRect,/所在椭圆外切矩形左上角水平坐标 int nTopRect,/所在椭圆外切矩形左上角垂直坐标 int nRightRect,/所在椭圆外切矩形右下角水平坐标 int nBottomRect,/所在椭圆外切矩形右下角垂直坐标 int nXStartArc,/起点水平坐标 int nYStartArc,/起点垂直坐标 起点到终点按逆时针截取 int nXEndArc,/终点水平坐标 /int nYEndArc /终点水平坐标/);成功返回TRUE,失败返回FALSE。2.设置截取方向int SetArcDirection(HDC hdc,/设备上下文句柄 int ArcDirection/AD_CLOCKWISE/AD_COUNTERCLOCKWISE,/按顺时针/逆时针截取);成功返回原截取方向,失败返回0。六、封闭图形-1.封闭第 3 页win32_06.txt能被画刷填充的图形是封闭图形。由直线围成的图形不属于封闭图形。2.矩形BOOL Rectangle(HDC hdc,/设备上下文句柄 int nLeftRect,/矩形左上角水平坐标 int nTopRect,/矩形左上角垂直坐标 int nRightRect,/矩形右下角水平坐标 int nBottomRect/矩形右下角垂直坐标);成功返回TRUE,失败返回FALSE。3.(椭)圆BOOL Ellipse(HDC hdc,/设备上下文句柄 int nLeftRect,/外切矩形左上角水平坐标 int nTopRect,/外切矩形左上角垂直坐标 int nRightRect,/外切矩形右下角水平坐标 int nBottomRect/外切矩形右下角垂直坐标;成功返回TRUE,失败返回FALSE。4.圆角矩形BOOL RoundRect(HDC hdc,/设备上下文句柄 int nLeftRect,/矩形左上角水平坐标 int nTopRect,/矩形左上角垂直坐标 int nRightRect,/矩形右下角水平坐标 int nBottomRect,/矩形右下角垂直坐标 int nWidth,/圆角所在椭圆的宽度 int nHeight /圆角所在椭圆的高度);成功返回TRUE,失败返回FALSE。范例:WinPaint七、画笔-1.画笔的作用线型、线宽和颜色。HPEN-画笔句柄。第 4 页win32_06.txt2.创建画笔HPEN CreatePen(int fnPenStyle,/线型 int nWidth,/线宽 COLORREF crColor /颜色);成功返回画笔句柄,失败返回NULL。fnPenStyle取值:PS_SOLID -实线 PS_DASH -虚线 PS_DOT -点线 PS_DASHDOT -点划线 PS_DASHDOTDOT -双点划线 PS_NULL -不可见除PS_SOLID可通过nWidth指定线宽外,其它线型只支持一像素线宽,若nWidth1,则按一律按实线画。3.将画笔应用到设备上下文中HGDIOBJ SelectObject(HDC hdc,/设备上下文句柄 HGDIOBJ hgdiobj/GDI对象句柄);成功返回原GDI对象句柄,失败返回NULL。4.恢复原画笔以第一次调用SelectObject函数的返回值作为参数再次调用该函数。5.释放画笔BOOL DeleteObject(HGDIOBJ hObject/GDI对象句柄);成功返回TRUE,失败返回FALSE。注意:不能删除设备上下文正在使用的GDI对象,因此必须先恢复原画笔,再删除新画笔。严格遵循“建-进-用-出-删”的操作步骤。八、画刷-1.画刷的作用第 5 页win32_06.txt封闭图形的填充颜色和图案。HBRUSH-画刷句柄。2.创建画刷1)单色画刷HBRUSH CreateSolidBrush(COLORREF crColor/填充颜色);成功返回画刷句柄,失败返回NULL。2)阴影线画刷HBRUSH CreateHatchBrush(int fnStyle,/阴影线风格 COLORREF clrref/阴影线颜色);成功返回画刷句柄,失败返回NULL。fnStyle取值:HS_HORIZONTAL-水平阴影(-)HS_VERTICAL -垂直阴影(|)HS_CROSS -正交阴影(+)HS_BDIAGONAL -正斜阴影(/)HS_FDIAGONAL -反斜阴影()HS_DIAGCROSS -斜交阴影(X)3)位图画刷HBRUSH CreatePatternBrush(HBITMAP hbmp/位图句柄);成功返回画刷句柄,失败返回NULL。3.将画刷应用到设备上下文中HGDIOBJ hbrushOld=SelectObject(hDC,hbrushNew);4.恢复原画刷SelectObject(hDC,hbrushOld);5.释放画刷DeleteObject(hbrushNew);第 6 页win32_06.txt九、库存对象-HGDIOBJ GetStockObject(int fnObject/库存对象类型);成功返回库存对象句柄,否则返回NULL。fnObject取值:HOLLOW_BRUSH NULL_BRUSH BLACK_BRUSH WHITE_BRUSH NULL_PEN BLACK_PEN WHITE_PEN .库存对象不需要通过DeleteObject释放。范例:WinPaint十、位图-1.基本知识计算机图像分为:光栅图像:记录图像中每一个像素点的颜色和透明度信息。矢量图像:记录图像的渲染算法、绘图指令等信息。Windows中的位图(Bitmap)是一种光栅图像,通过位图句柄标识HBITMAP。2.位图的使用1)在资源中添加位图资源2)从资源中加载位图HBITMAP LoadBitmap(HINSTANCE hInstance,/应用程序实例句柄 LPCTSTR lpBitmapName/位图资源名);成功返回位图句柄,失败返回NULL。3)创建一个与当前设备上下文相匹配的内存设备上下文HDC CreateCompatibleDC(HDC hdc/当前设备上下文句柄,/可为NULL,使用屏幕设备上下文);第 7 页win32_06.txt成功返回内存设备上下文句柄,失败返回NULL。4)将位图选入内存设备上下文HGDIOBJ hbmpOld=SelectObject(hdcMem,hbmpNew);5)位图成像A.原样成像:将内存设备上下文中的位图按原样成像到窗口设备上下文中BOOL BitBlt(HDC hdcDest,/目标设备上下文句柄 int nXDest,/目标图像左上角水平坐标 int nYDest,/目标图像左上角垂直坐标 int nWidth,/图像宽度 int nHeight,/图像高度 HDC hdcSrc,/源设备上下文句柄 int nXSrc,/源图像左上角水平坐标 int nYSrc,/源图像左上角垂直坐标 DWORD dwRop /光栅操作(ROP)码,源像素与目标像素的位运算);成功返回TRUE,失败返回FALSE。B.缩放成像:将内存设备上下文中的位图按一定比例缩放成像到窗口设备上下文中BOOL StretchBlt(HDC hdcDest,/目标设备上下文句柄 int nXOriginDest,/目标图像左上角水平坐标 int nYOriginDest,/目标图像左上角垂直坐标 int nWidthDest,/目标图像宽度 int nHeightDest,/目标图像高度 HDC hdcSrc,/源设备上下文句柄 int nXOriginSrc,/源图像左上角水平坐标 int nYOriginSrc,/源图像左上角垂直坐标 int nWidthSrc,/源图像宽度 int nHeightSrc,/源图像高度 DWORD dwRop /光栅操作(ROP)码);成功返回TRUE,失败返回FALSE。6)恢复原位图SelectObject(hdcMem,hbmpOld);7)释放位图DeleteObject(hbmpNew);8)释放内存设备上下文BOOL DeleteDC(HDC hdc/设备上下文句柄);第 8 页win32_06.txt成功返回TRUE,失败返回FALSE。CreateCompatibleDC +-+|V hdc hdcMem+-+-+-+|位图资源|+-+|+-+|+-+LoadBitmap|*|*|V|*|*|SelectObject +-+|*|*|指定一个即可,int nWidth,/字体宽度/系统自动计算另一个值 int nEscapement,/倾斜角度 int nOrientation,/旋转角度,无效果,置0即可 int fnWeight,/字体粗细 DWORD fdwItalic,/是否斜体 DWORD fdwUnderline,/是否带下划线 DWORD fdwStrikeOut,/是否带删除线 DWORD fdwCharSet,/字符集标识,用GB2312_CHARSET即可 DWORD fdwOutputPrecision,/输出精度,置0即可 DWORD fdwClipPrecision,/剪切精度,置0即可 DWORD fdwQuality,/输出质量,置0即可 DWORD fdwPitchAndFamily,/匹配字体,若lpszFace所指字体不存在,/则取此参数所指字体。/若此参数所指字体亦不存在,则取缺省字体 LPCTSTR lpszFace /字体名);成功返回字体句柄,失败返回NULL。2)应用字体HFONT hfntOld=SelectObject(hDC,hfontNew);3)绘制文字TextOut/DrawText/ExtTextOutEx4)恢复字体SelectObject(hDC,hfontOld);5)删除字体DeleteObject(hfontNew);范例:WinFont第 14 页

    注意事项

    本文(win32内核编程_06.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开