书签 分享 收藏 举报 版权申诉 / 25
上传文档赚钱

类型GDI-GDI-从入门到精通-第五讲课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3229000
  • 上传时间:2022-08-08
  • 格式:PPT
  • 页数:25
  • 大小:618KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《GDI-GDI-从入门到精通-第五讲课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    GDI 入门 精通 第五 讲课
    资源描述:

    1、第五讲: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);就是创建矩形区域,CreateRoun

    2、dRectRgn(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,-10

    3、0,-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当前绘制的起点坐标。百叶窗特效特效介绍百叶窗就是把窗口的客户区域分割

    4、成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.奇数个的条状块区

    5、域。获取位图的像素颜色数据GetBitmapBits(HBITMAP hbit,LONG cb,LPVOID lpvBits);参数hbit就是要获取像素颜色数据的位图句柄。参数lpvBits就是要接收位图像素颜色数据的缓冲区。参数cb就是缓冲区lpvBits的大小。CreateDIBSection创建位图CreateDIBSection函数的功能就是创建一个应用程序可以直接写入像素颜色数据、与设备无关的位图。该函数提供一个指针,该指针指向位图的像素颜色数据的地方。通过改指针修改数据,最终为该位图写入了像素颜色数据了。CreateDIBSection创建位图HBITMAP CreateDIBS

    6、ection(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_COLOR

    7、S)。参数ppvBits指向一个变量的指针,该变量接收一个指向DIB位数据值的指针。CreateDIBSection创建位图参数hSection为文件映射对象的句柄。函数将使用该对象来创建位图,该参数可以是NULL。参数DwOffset指定从hSection引用的文件映射对象开始处算起的偏移量。在hSection为NULL时,该值被忽略。返回值:如果函数执行成功,那么返回值就是刚刚创建的位图句柄。如果函数执行失败,返回值为NULL。Bitmap的结构BMP文件总体上由4部分组成,分别是位图文件头、位图信息头、调色板和图像数据。16Bitmap的结构位图文件头包含了图像类型、图像大小、图据存放地

    8、址和两个保留未使用的字段。typedef struct tagBITMAPFILEHEADER WORD bfType;/图像类型 DWORD bfSize;/图像大小 WORD bfReserved1;/保留未使用的字断 WORD bfReserved2;/保留未使用的字断 DWORD bfOffBits;/图像数据存放地址 BITMAPFILEHEADER17Bitmap的结构位图信息头包含了位图信息头的大小、图像的宽高、图像的色深、压缩说明、图像数据的大小和其它一些参数。typedef struct tagBITMAPINFOHEADER DWORD biSize;/本结构的大小。LON

    9、G biWidth;/BMP图像的宽度。LONG biHeight;/BMP图像的高度。WORD biPlanes;/图像的面数。WORD biBitCount;/图像的色深,即一个像素用多少位表示。DWORD biCompression;/压缩方式,如0表示不压缩,1表示RLE8压缩,2表示RLE4压缩。DWORD biSizeImage;/BMP图像数据大小。LONG biXPelsPerMeter;/水平分辨率。LONG biYPelsPerMeter;/重直分辨率 DWORD biClrUsed;/BMP图像使用的颜色,0表示使用全部颜色,对于256色位图来说,此值为256。DWORD

    10、 biClrImportant;/重要的颜色数,此值为0时所有颜色都重要,对于使用调色板的BMP图像来说,当显卡不能够显示所有颜色时,此值将被辅助驱动程序显示颜色。BITMAPINFOHEADER;18Bitmap的结构调色板是单色、16色和256色图像文件所特有的,相对应的调色板大小是2、16和256,调色板以4字节为单位,每4个字节存放一个颜色值,图像的数据是指向调色板的索引。19Bitmap的结构调色板的数据结构定义:typedef struct tagRGBQUAD BYTE rgbBlue;/蓝色值 BYTE rgbGreen;/绿色值 BYTE rgbRed;/红色值 BYTE r

    11、gbReserved;/保留值 RGBQUAD;20Bitmap的结构位图数据:如果图像是单色、16色和256色,则紧跟着调色板的是位图数据,位图数据是指向调色板的索引序号。如果图像是16位、24位和32位色,则文件中不保留调色板,即不存在调色板,图像的颜色直接在位图数据中给出。21Bitmap的结构16位图像使用2字节保存颜色值,常见有两种格式:5位红5位绿5位蓝和5位红6位绿5位蓝,即555格式和565格式。555格式只使用了15位,最后一位保留,设为0。24位图像使用3字节保存颜色值,每一个字节代表一种颜色,按红、绿、蓝排列。32位图像使用4字节保存颜色值,每一个字节代表一种颜色,除了原

    12、来的红、绿、蓝,还有Alpha通道,即透明色。22GetDIBits获取位图数据参数lpvBits指向接收位图数据的缓冲区,如果该参数为NULL,位图的格式与大小将被写进由参数lpbmi指向的BITMAPINFO结构中。参数Lpbi指向BITMAPINFO结构。BITMAPINFO结构指定了hbm位图数据的格式。如果lpvBits非空,则位图的颜色表将被设置到此结构上。GetDIBits获取位图数据int GetDIBits(HDC hdc,HBITMAP hbm,UINT start,UINT cLines,LPVOID lpvBits,LPBITMAPINFO lpbmi,UINT usage);参数hdc就是设备DC。参数hbm就是要获取位图数据的位图句柄。参数start设置要获取位图数据的第一条扫描线。参数cLines设置要获取位图数据的扫描线数目。GetDIBits获取位图数据参数uUsage设置lpbmi所指向的BITMAPINFO结构中bmiColors的含义。uUsage可以是下列值之一:DIB_PAL_COLORS:通过调色板方式表示颜色。DIB_RGB_COLORS:直接采用RGB方式表示颜色。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:GDI-GDI-从入门到精通-第五讲课件.ppt
    链接地址:https://www.163wenku.com/p-3229000.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库