结构化BLT模式-简介
使用StretchBlt时,会出现与调整位图大小相关的根本问题。 扩展位图时,StretchBlt必须复制像素的行或列。 如果放大率不是原始图像的整数倍,则此操作会使图像稍微失真。
StretchBlt模式-如果目标矩形小于源矩形,则StretchBlt指示在缩小图像时必须将两行或多行或多列像素合并为一行或多列。 有四种方法可以做到这一点。 根据装置的内容扩展模式属性,选择一种方法。 可以使用SetStretchBltMode函数更改此属性。
setstretchbltmode(HDC,iMode;
iMode可以具有以下值:
如果需要将两个或多个BLACKONWHITE或STRETCH_ANDSCANS (内定)像素合并为一个像素,StretchBlt将对像素执行逻辑AND运算。 这意味着,只有当所有原始像素都是白色时,该像素才是白色的,而实际上黑色像素控制着白色像素。 这主要适用于白色背景中的黑色单色位图。
如果需要将WHITEONBLACK或STRETCH_ORSCANS两个或多个像素合并为一个像素,StretchBlt将执行逻辑OR运算。 因此,只有在所有原始像素都为黑色时才会变为黑色。 也就是说,颜色由白色像素决定。 这主要适用于黑色背景中白色单色的位图。
COLORONCOLOR或STRETCH_DELETESCANS StretchBlt只是删除像素的行或列,而没有逻辑组合。 这通常是处理彩色位图的最好方法。
HALFTONE或STRETCH_HALFTONE Windows根据组合的源颜色计算所需的平均颜色。 它与半色调调色板配合使用,第16章介绍了该过程。
Windows还包含用于获取当前扩展模式的GetStretchBltMode函数。
/* * * * * * * * * * * * * * * * * *
来自3http://www.hudong.com/wiki/stretchblt模式
/* * * * * * * * * * * * * * * * * *