全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业合同范本及风险识别指导手册
- 电梯日常维护与安全检查标准
- 数据中心运维管理规范与实务
- 酒店客房服务标准流程与培训手册
- 金属涂层及镀金密度详解报告
- 医疗器械维护与检修流程标准
- 农业病虫害咨询磋商方案(3篇)
- 正规咨询服务指导方案范文(3篇)
- 惠州电商税收方案咨询(3篇)
- 烟台推广方案在线咨询电话(3篇)
- 2025年国家开放大学(电大)《应用写作》期末考试备考试题及答案解析
- 新版苏教版四年级上册科学(全册教案及教学计划及进度表)
- GB/T 3099.1-2008紧固件术语螺纹紧固件、销及垫圈
- GB/T 25179-2010生活垃圾填埋场稳定化场地利用技术要求
- GA 1016-2012枪支(弹药)库室风险等级划分与安全防范要求
- 华为以奋斗者为本课件
- 海南省建筑工程竣工验收资料
- 全国注册安全工程师2019-2021年《金属非金属矿山安全》真题及答案解析
- 脑干听觉诱发电位课件
- 金坛区苏科版四年级心理健康教育第4课《化解冲突有办法》课件(定稿)
- 输液泵/微量注射泵使用技术操作考核评分标准
评论
0/150
提交评论