全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ZoomDIB() 该函数用来缩放DIB图像,返回新生成DIB的句柄1. /*2. *3. *函数名称:4. *ZoomDIB()5. *6. *参数:7. *LPSTRlpDIB-指向源DIB的指针8. *floatfXZoomRatio-X轴方向缩放比率9. *floatfYZoomRatio-Y轴方向缩放比率10. *11. *返回值:12. *HGLOBAL-缩放成功返回新DIB句柄,否则返回NULL。13. *14. *说明:15. *该函数用来缩放DIB图像,返回新生成DIB的句柄。16. *17. */18. 19. HGLOBALWINAPIZoomDIB(LPSTRlpDIB,floatfXZoomRatio,floatfYZoomRatio)20. 21. 22. /源图像的宽度和高度 23. LONGlWidth;24. LONGlHeight;25. 26. /缩放后图像的宽度和高度 27. LONGlNewWidth;28. LONGlNewHeight;29. 30. /缩放后图像的宽度 31. LONGlNewLineBytes;32. 33. /指向源图像的指针 34. LPSTRlpDIBBits;35. 36. /指向源象素的指针 37. LPSTRlpSrc;38. 39. /缩放后新DIB句柄 40. HDIBhDIB;41. 42. /指向缩放图像对应象素的指针 43. LPSTRlpDst;44. 45. /指向缩放图像的指针 46. LPSTRlpNewDIB;47. LPSTRlpNewDIBBits;48. 49. /指向BITMAPINFO结构的指针 50. LPBITMAPINFOHEADERlpbmi;51. 52. /指向BITMAPCOREINFO结构的指针 53. LPBITMAPCOREHEADERlpbmc;54. 55. /循环变量 56. LONGi;57. LONGj;58. 59. /象素在源DIB中的坐标 60. LONGi0;61. LONGj0;62. 63. /图像每行的字节数 64. LONGlLineBytes;65. 66. /找到源DIB图像象素起始位置 67. lpDIBBits=:FindDIBBits(lpDIB);68. 69. /获取图像的宽度 70. lWidth=:DIBWidth(lpDIB);71. 72. /计算图像每行的字节数 73. lLineBytes=WIDTHBYTES(lWidth*8);74. 75. /获取图像的高度 76. lHeight=:DIBHeight(lpDIB);77. 78. /计算缩放后的图像实际宽度 79. /此处直接加0.5是由于强制类型转换时不四舍五入,而是直接截去小数部分 80. lNewWidth=(LONG)(:DIBWidth(lpDIB)*fXZoomRatio+0.5);81. 82. /计算新图像每行的字节数 83. lNewLineBytes=WIDTHBYTES(lNewWidth*8);84. 85. /计算缩放后的图像高度 86. lNewHeight=(LONG)(lHeight*fYZoomRatio+0.5);87. 88. /分配内存,以保存新DIB 89. hDIB=(HDIB):GlobalAlloc(GHND,lNewLineBytes*lNewHeight+*(LPDWORD)lpDIB+:PaletteSize(lpDIB);90. 91. /判断是否内存分配失败 92. if(hDIB=NULL)93. 94. /分配内存失败 95. returnNULL;96. 97. 98. /锁定内存 99. lpNewDIB=(char*):GlobalLock(HGLOBAL)hDIB);100. 101. /复制DIB信息头和调色板 102. memcpy(lpNewDIB,lpDIB,*(LPDWORD)lpDIB+:PaletteSize(lpDIB);103. 104. /找到新DIB象素起始位置 105. lpNewDIBBits=:FindDIBBits(lpNewDIB);106. 107. /获取指针 108. lpbmi=(LPBITMAPINFOHEADER)lpNewDIB;109. lpbmc=(LPBITMAPCOREHEADER)lpNewDIB;110. 111. /更新DIB中图像的高度和宽度 112. if(IS_WIN30_DIB(lpNewDIB)113. 114. /对于Windows3.0DIB 115. lpbmi-biWidth=lNewWidth;116. lpbmi-biHeight=lNewHeight;117. 118. else119. 120. /对于其它格式的DIB 121. lpbmc-bcWidth=(unsignedshort)lNewWidth;122. lpbmc-bcHeight=(unsignedshort)lNewHeight;123. 124. 125. /针对图像每行进行操作 126. for(i=0;ilNewHeight;i+)127. 128. /针对图像每列进行操作 129. for(j=0;j=0)&(j0=0)&(i0lHeight)142. 143. 144. /指向源DIB第i0行,第j0个象素的指针 145. lpSrc=(char*)lpDIBBits+lLineBytes*(lHeight-1-i0)+j0;146. 147. /复制象素 148. *lpDst=*lpSrc;149. 150. el
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市政道路新技术材料应用汇报
- 护士职业资格考试辅导资料
- 小学五年级英语语法重点难点讲解
- 南充高一数学期末考题解析2017版
- 青少年心理健康在线辅导方案
- 企业信息化建设规划与应用
- 专业酒店餐饮服务流程标准制定
- 三年级下册乘法口算教学详细讲解
- 城市轨道交通施工组织设计与管理
- 财务报表分析方法及应用实务案例
- 2025年下半年四川省泸州市人力资源和社会保障局信息中心招聘3人重点基础提升(共500题)附带答案详解
- 佛山地库信号覆盖施工方案
- 2025贵州玉屏侗族自治县人民医院第一批招聘编外人员26人备考考试题库附答案解析
- 9.2《永遇乐•京口北固亭怀古》课件+2025-2026学年统编版高一语文必修上册
- 2025年国家开放大学(电大)《应用写作》期末考试备考试题及答案解析
- 2024湘少版(三起)三年级英语上册全册教案
- 团员考试题目及答案大题
- 2025年皮肤科皮肤病病理形态学诊断能力测试答案及解析
- 哈巴涅拉舞曲课件
- 扬尘治理专项施工方案(水利工程版)
- 双馈风力发电机培训课件
评论
0/150
提交评论