博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

VC里面的画图函数[转]

Posted on 2009-12-15 22:28  红波  阅读(1008)  评论(0)    收藏  举报

(对作者表歉意,不记得转至何处,仅当自己笔记)

二、BitBlt

     所谓的BitBlt就是将显存当中不同内存块当中的储存进行复制。BitBlt有两种方式一种是等比例的复制,另外一种是非等比例的复制。等比例的复制调用BitBlt函数这个函数的原型是BitBlt(HDC hdcDsp,int x,int y,int cx,int cy,HDC hdcSour,int x,int y,int);函数的前五个参数是目标位图的设备描述表句柄、位置和大小,紧接着的三个参数是源位图的设备描述表句柄、以及开始的位置,最后一个参数表示 BitBlt的方式,一般使用SRCCOPY。

      另外一种BitBlt的方式是非等比例的复制,这时需要调用StretchBlt函数,这个函数的原型是StretchBlt(HDC hdcDsp,int x,int y,int cx,int cy,HDC hdcSour,int x,int y,int cx,int cy,int);函数参数的意义与BitBlt相似。在使用这种方式BitBlt时可能存在位图的缩放,这时也就可能存在位图当中象素行的合并和删除,要定义象素行合并的方式需要调用SetStretchBltMode(HDC,int Mode);函数,函数当中第一个参数是BitBlt当中目标位图的HDC,第二个参数表示处理象素行合并或者删除的方式,这里的可行值有 WHITEONBLACK,BLACKONWHITE,COLORONCOLOR三个,前两个用于黑白位图当中,其中第一个用于黑色为背景白色为图像主要颜色的黑白图像当中,后一个正好相反;最后一个参数用在彩色图像的缩放当中。