当前位置: 移动技术网 > IT编程>开发语言>C/C++ > StretchBlt函数和BitBlt函数的区别和用法

StretchBlt函数和BitBlt函数的区别和用法

2018年09月08日  | 移动技术网IT编程  | 我要评论

化蝶飞英文版,拷贝纸,敦煌画境txt

stretchblt和bitblt都用用来显示一幅图像

一、stretchblt

函数从源矩形中复制一个位图到目标矩形,必要时按目标设备设置的模式进行图像的拉伸或压缩。也即是将内存中的位图拷贝到屏幕上,并且可以根据屏幕画图区的大小来进行伸缩,适应响应的屏幕(或图像控件)

bool stretchblt( int x, int y, int nwidth, int nheight, cdc* psrcdc, int xsrc, int ysrc, int nsrcwidth, int nsrcheight, dword dwrop );
x:逻辑单元x轴左上角坐标; (获取图像控件的dc后,该值一般设为 0 ) 
y:逻辑单元y轴左上角坐标; (获取图像控件的dc后,该值一般设为 0 ) 
nwidth: 设备矩形宽度;(即是图像控件的宽度,通过int rcwidth = rc.right - rc.left;来获得,rc为保存了图像控件矩形区坐标信息)
nheight:设备矩形高度;  (即是图像控件的高度,通过int rcheight = rc.bottom - rc.top;来获得)
psrcdc: 源设备上下文;   (就是我们定义的内存dc,然后取地址)
xsrc :源矩形x轴左上角坐标;   (一般都是整幅图片拷贝,所以该值为 0 )
ysrc: 源矩形y轴左上角坐标;  (一般都是整幅图片拷贝,所以该值为 0 )
specifies the x-coordinate (in logical units) of the upper-left corner of the source rectangle.
nsrcwidth:源矩形宽度;(如果我们定义了一个结构体bitmap类型m_bmp保存位图信息,那么可以用m_bmp.bmwidth获取宽度)
nsrcheight:源矩形高度 ( 如果我们定义了一个结构体bitmap类型m_bmp保存位图信息,那么可以用m_bmp.bmheight获取宽度)
dwrop:指定要进行的光栅操作。(这个有很多选择,我们一般选择srccopy:将源矩形区域直接拷贝到目标矩形区域。)
二、bitblt函数

该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。

bitblt 
bool bitblt( int x, int y, int nwidth, int nheight, cdc* psrcdc, int xsrc, int ysrc, dword dwrop );

bitblt函数和上面的stretchblt函数的参数基本上差不多,只是少了倒数第二个和倒数第三个参数:

nsrcwidth:源矩形宽度; 以及,nsrcheight:源矩形高度 

前面四个参数也是和目标矩形(也即是我们的图像控件区域)相关的,如果是图像控件的话,起点坐标也是(0,0),终点坐标就是矩形区的宽度和高度;

对于源矩形区域(指内存dc中的位图),只需要给出拷贝的起点即可,

bitblt函数不会对原来的位图进行拉伸或压缩,只会根据我们给定的nwidth,nheight 值来决定该有多少部分进行显示

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网