StretchBlt函数和BitBlt函数的区别和用法
程序员文章站
2022-07-02 21:01:51
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 值来决定该有多少部分进行显示
推荐阅读
-
如何使用PHP实现javascript的escape和unescape函数
-
给Oracle添加split和splitstr函数的方法
-
python基础教程之popen函数操作其它程序的输入和输出示例
-
python 列表,数组和矩阵sum的用法及区别介绍
-
ThinkPHP中公共函数路径和配置项路径的映射分析
-
Python中非常实用的一些功能和函数分享
-
Kotlin 扩展函数和扩展属性的使用方法
-
asp.net 日期函数 某月的第一天和最后一天的日期
-
PHP explode()函数的几个应用和implode()函数有什么区别
-
Python2.x和3.x下maketrans与translate函数使用上的不同