StretchDIBits?(35分)

  • 主题发起人 主题发起人 金少
  • 开始时间 开始时间

金少

Unregistered / Unconfirmed
GUEST, unregistred user!
有谁能给我详细讲讲以下的API函数吗?
int StretchDIBits(
HDC hdc, // handle of device context
int XDest, // x-coordinate of upper-left corner of dest. rect.
int YDest, // y-coordinate of upper-left corner of dest. rect.
int nDestWidth, // width of destination rectangle
int nDestHeight, // height of destination rectangle
int XSrc, // x-coordinate of upper-left corner of source rect.
int YSrc, // y-coordinate of upper-left corner of source rect.
int nSrcWidth, // width of source rectangle
int nSrcHeight, // height of source rectangle
CONST VOID *lpBits, // address of bitmap bits
CONST BITMAPINFO *lpBitsInfo, // address of bitmap data
UINT iUsage, // usage
DWORD dwRop // raster operation code
);
特别是 CONST VOID *lpBits, // address of bitmap bits
CONST BITMAPINFO *lpBitsInfo, // address of bitmap data
如果我分别将*lpBits定义为lpstr类型的指针, 将*lpBitsInfo定义为PBITMAPINFOHEADER;
如果我将两副图写入lpstr, (我不知怎样描述, 希望你能明白)
现在我想在调用StretchDIBits前, 让这两个lpstr类型的数据想减,
再调用StretchDIBits! 目的是实现这两副图的数据相减!
或对lpstr熟悉的朋友, 请多多指教, tks!
 
说明
将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景。这个函数在设备场景中定义了一个目标矩形,用于接收位图数据。它也在DIB中定义了一个源矩形,以便从中提取数据。根据设备场景的StretchBlt模式(由SetStretchBltMode函数决定),源矩形会根据需要调整,以便符合目标矩形的要求
返回值
Long,如函数执行成功,返回欲复制的扫描线的数量;如返回常数GDI_ERROR,表示出错
参数表
参数 类型及说明
hdc Long,一个设备场景的句柄。该场景用于接收位图数据
x,y Long,用逻辑坐标表示的目标矩形的起点
dx,dy Long,目标矩形的宽度及高度,以逻辑坐标表示
SrcX,SrcY Long,用设备坐标表示的源矩形在DIB中的起点
wSrcWidth,wSrcHeight Long,源矩形的宽度与高度,用设备坐标表示。如其中有一个参数的符号(指正负号)与对应的目标参数不符,位图就会在对应的轴上作镜像转换
lpBits Any,指向一个缓冲区的指针。这个缓冲区包含了以DIB格式描述的位图数据;这种格式是由lpBitsInfo指定的
lpBitsInfo BITMAPINFO,对lpBits DIB的格式和颜色进行描述的一个结构
wUsage Long,下述常数之一
DIB_PAL_COLORS 颜色表是一个整数数组,其中包含了与目前选入hdc设备场景的调色板相关的索引
DIB_RGB_COLORS 颜色表包含了RG颜色
dwRop Long,欲进行的光栅运算
 
实现两幅图象的数据相减
设置光栅运算
 
amakusa 你好:
詳細點嗎, 最好有代碼, 謝謝!
 
接受答案了.
 
后退
顶部