GDIGDI+从入门到精通-第五讲介绍.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五讲:GDI/GDI+高级编程进阶 主讲人:阙海忠 UIPower CEO 本讲要点 图片平铺 DC的偏移 内存DC类的构建 百叶窗特效 保存图像文件到本地磁盘 DC的剪辑 用SelectClipRgn函数来剪辑指定的区域,只有被剪辑的部分,才会被绘制! SelectClipRgn(HDC hDC, HRGN hRgn); 参数hDC就是我们要剪辑的DC句柄。 参数hRgn就是我们要剪辑的区域。 DC的剪辑 要剪辑的区域,不一定要是矩形区域,也可以是圆角矩形区域,也可以是圆形区域等。比如: CreateRectRgn(int x1, int y1, int x2, int y2);就是创建矩形区域, CreateRoundRectRgn(int x1,int y1,int x2,int y2,int w,int h)就是创建圆角矩形区域, CreateEllipticRgn(int x1, int y1, int x2, int y2);就是创建圆形区域。 DC的偏移 DC的偏移就是设置DC绘制的起点坐标位置。默认情况下,DC的绘制起点坐标是在DC左上角的(0,0)位置。 如果我们把这个起点坐标修改了,假如修改成(100,200),那以后往这个DC绘制时,就默认以(100,200)为起点坐标。这时,如果编写TextOut(hdc, 0, 0, ...),就会把字符串绘制在(100,200)上面;如果编写TextOut(hdc, -100, -200, ...),就会把字符串绘制在(0,0)上面。 DC的偏移 SetViewportOrgEx(HDC hdc, int x, int y, LPPOINT lppt); 参数hdc就是要修改绘制起点坐标的DC句柄。 参数x就是新的绘制起点坐标的X坐标位置。 参数y就是新的绘制起点坐标的Y坐标位置。 参数lppt可以用来获取旧的绘制起点坐标,可设置为NULL,代表不获取。 DC的偏移 GetViewportOrgEx(HDC hdc, LPPOINT lppoint); 参数hdc就是要获取绘制起点坐标的DC句柄。 参数lppoint用来获取hdc当前绘制的起点坐标。 百叶窗特效特效介绍 百叶窗就是把窗口的客户区域分割成N个的条状块。假设按下键盘的E键时,窗口背景就变成白色,然后,依次显示2,4,6,8,10...偶数个的条状块区域,偶数的条状块区域显示完之后,再依次地显示1,3,5,7,9...奇数个的条状块区域。 下页为百页窗显示过程的一张截图。 百叶窗特效特效介绍 百叶窗特效实现思路 首先,获取当前窗口DC中的位图句柄。 然后,获取当前窗口DC位图中的像素颜色数据。 再然后,创建N个位图,每个位图对应百叶窗的每个条状块。每创建完一个新位图之后,把当前窗口DC位图中的指定区块的颜色数据拷贝到新位图的像素数据中。 再然后,就依次绘制2,4,6,8,10...偶数个的条状块区域。 再然后,就依次绘制1,3,5,7,9...奇数个的条状块区域。 获取位图的像素颜色数据 GetBitmapBits(HBITMAP hbit, LONG cb, LPVOID lpvBits); 参数hbit就是要获取像素颜色数据的位图句柄。 参数lpvBits就是要接收位图像素颜色数据的缓冲区。 参数cb就是缓冲区lpvBits的大小。 CreateDIBSection创建位图 CreateDIBSection函数的功能就是创建一个应用程序可以直接写入像素颜色数据、与设备无关的位图。该函数提供一个指针,该指针指向位图的像素颜色数据的地方。通过改指针修改数据,最终为该位图写入了像素颜色数据了。 CreateDIBSection创建位图 HBITMAP CreateDIBSection(HDC hdc, CONST BITMAPINFO *lpbmi, UINT usage, VOID **ppvBits, HANDLE hSection, DWORD offset); 参数hdc就是设备环境句柄。 参数lpbmi就是一个指向BITMAPINFO结构的指针,该结构指定了设备位图的各种属性,比如位图的维数。 CreateDIBSection创建位图 参数iUsage指定由pbmi参数指定的BITMAPINFO结构中的成员bmiColors数组包含的数据类型,要么是逻辑调色板索引值(对应的参数值是DIB_PAL_COLORS),要么是原始的RGB值(对应的参数值是DIB_RGB_COLORS)。 参数ppvBits指向一个变量的指针,该变量接收一个指向DIB位数

文档评论(0)

4477769 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档