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

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 值来决定该有多少部分进行显示

 

转载于:https://www.cnblogs.com/simont/p/9600910.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【剑指offer】面试题11:旋转数组的最小数字(java)

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: …

Nature封面!我国仿生软体机器人“打卡”地球最深海沟,遨游水下10900米!

来源:之江实验室、仿生深海软体机器人项目组、浙江大学▍适应万米静水压的软体机器人由于极端的静水压力,深海区域人们基本很难探测。位于西太平洋的马里亚纳海沟是已知的海洋最深处,水压高、温度低、完全黑暗,被称为“地球第四极…

SSD: ReLU6

1、在src\caffe\proto\caffe.proto中搜索message LayerParameter,在optional ReLUParameter relu_param 123之后添加optional ReLU6Parameter relu6_param 208; (最后的分号别忘了) 2、搜索message ReLUParameter,在这个ReLUParameter实现结构之后添加 // Message that store…

【剑指offer】面试题12:矩阵中的路径(Java)

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如&#xf…

2021年斯坦福AI指数报告重磅出炉!中国AI期刊影响力首超美国,视频处理是新风口...

来源:AI科技评论作者:AI科技评论CV在快速工业化,大公司正扩大计算鸿沟。就在刚刚,斯坦福大学正式发布《2021年人工智能指数报告》(“Artificial Intelligence Index Report 2021”)!报告链接&am…

16重新安装HA0.63

2018-02-24 14:17:46 https://home-assistant.io/docs/installation/raspberry-pi/首先安装2017-11-29-raspbian-stretch树莓派镜像到SD卡,步骤如下:下载镜像文件,转到网页https://www.raspberrypi.org/downloads/raspbian/,下载“…

【剑指 offer】面试题13:机器人的运动范围(Java)

地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如&am…

超人类AI的幻想与思考:自下而上构建的自我迭代意识系统

来源:人民网或许很多人都幻想过,如果有一天,人工智能超越了人类的智力水平,世界将会发声怎样天翻地覆的变化。而在这个看似遥远,又似乎近在咫尺的幻想实现之前,不放让我们来深入探讨一下, 怎样才…

【剑指offer】面试题14- I:剪绳子(Java)

给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0]*k[1]*...*k[m] 可能的最大乘积是多少?例如,当绳子的…

elk安装

官网下载最新的rpm包安装。 http://blog.51cto.com/liqingbiao/1928653 es安装head 先安装node wget https://nodejs.org/dist/v0.10.48/node-v0.10.48.tar.gz 加压,make,make install node --version git clone https://github.com/mobz/elasticsearch…

2021城市大脑与智能产业趋势简报第五期

《城市大脑与智能产业趋势简报》是“城市大脑全球标准研究组”推荐的一周内城市大脑和智能产业领域值得关注的重要科技进展、新闻动态、专家观点和专业知识。本次周报(2021.2.24-2021.3.3)共推荐99条重要信息(点击链接地址可以直接打开阅读&a…

【剑指offer】面试题15:二进制中1的个数(Java)

请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:000000000000000000…

物理理论发展放缓?这是一种认知误判

来源:光明日报作者:李侠,系上海交通大学科学史与科学文化研究院院长、教授物理基础理论的发展是否已经停滞。这是一个经常被人们提起但其实很复杂的问题。基于科学哲学的基本理论,笔者认为:以物理学为代表的基础理论仍…

【剑指offer】面试题16:数值的整数次方(Java)

实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000…

php blog to explore

https://www.zachstronaut.com/posts/2009/02/09/careful-with-php-empty.html转载于:https://www.cnblogs.com/qinqiu/p/9606348.html

【剑指offer】面试题18:删除链表的节点(Java)

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head [4,5,1,9], val 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用…

java容器02--ArrayList源码分析

1.1 ArrayList 1. 概览 实现了 RandomAccess 接口&#xff0c;因此支持随机访问。这是理所当然的&#xff0c;因为 ArrayList 是基于数组实现的。 public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.…

斯坦福连续发了四年的AI报告,今年讲了什么?

来源&#xff1a;机器之心报道编辑&#xff1a;蛋酱、魔王、陈萍由斯坦福大学发起的人工智能指数&#xff08;AI Index&#xff09;是一个追踪 AI 动态和进展的非营利性项目&#xff0c;旨在全面研究 AI 行业状况&#xff0c;旨在促进基于数据的 AI 广泛交流和有效对话。刚刚&a…

【剑指offer】面试题19:正则表达式匹配(Java)

请实现一个函数用来匹配包含. 和*的正则表达式。模式中的字符.表示任意一个字符&#xff0c;而*表示它前面的字符可以出现任意次&#xff08;含0次&#xff09;。在本题中&#xff0c;匹配是指字符串的所有字符匹配整个模式。例如&#xff0c;字符串"aaa"与模式"…

面试-重写基础功能函数

重写基础函数 1. 字符串拷&#xff1a;strcpy() 函数strcpy的原型是char* strcpy(char* des , const char* src)&#xff0c;des 和 src 所指内存区域不可以重叠且 des 必须有足够的空间来容纳 src 的字符串。 char* strcpy( char* dst, const char* src ) {assert( NULL ! ds…