StretchBlt函数和BitBlt函数的区别和用法
程序员文章站
2022-04-18 11:49:55
StretchBlt和BitBlt都用用来显示一幅图像 一、StretchBlt 函数从源矩形中复制一个位图到目标矩形,必要时按目标设备设置的模式进行图像的拉伸或压缩。也即是将内存中的位图拷贝到屏幕上,并且可以根据屏幕画图区的大小来进行伸缩,适应响应的屏幕(或图像控件) 二、BitBlt函数 二、B ......
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 值来决定该有多少部分进行显示
下一篇: spring为类的静态属性实现注入