等比缩放公式_等比缩放算法
1、函数
// 功能: 矩形区缩放到目标矩形区
// 参数:
// rcDest : 目标矩形区域
// nSrcWidth: 被缩放矩形区的宽度
// nFormat: 矩形区在目标矩形区对齐方式 DT_TOP DT_VCENTER DT_BOTTOM DT_LEFT DT_CENTER DT_RIGHT
// 返回值: 矩形区缩放后在目标矩形区的位置
//#define DT_TOP 0x00000000 // 垂直方向顶端对齐
//#define DT_LEFT 0x00000000 // 水平方向左对齐
//#define DT_CENTER 0x00000001 // 水平方向居中对齐
//#define DT_RIGHT 0x00000002 // 水平方向右对齐
//#define DT_VCENTER 0x00000004 // 垂直方向居中对齐
//#define DT_BOTTOM 0x00000008 // 垂直方向底部对齐
CRect Zoom(CRect rcDest, int nSrcWidth, int nSrcHeight, UINT nFormat)
{
float fW = 1.0 * nSrcWidth / rcDest.Width();
float fH = 1.0 * nSrcHeight / rcDest.Height();
float fRatio = fW;
if ( fH - fW > 0.000001 && fH - 1 > 0.00001 )
fRatio = fH;
nSrcWidth *= fRatio;
nSrcHeight*= fRatio;
CRect rc;
if ( 0 == nFormat )
{
rc.top = rcDest.top;
rc.bottom = rc.top + nSrcHeight;
}
else if ( 0 != nFormat&0x00000001 )
{
rc.top = rcDest.top + (rcDest.Height() - nSrcHeight)/2;
rc.bottom = rc.top + nSrcHeight;
}
else if ( 0 != nFormat&0x00000008 )
{
rc.bottom = rcDest.bottom;
rc.top = rc.bottom - nSrcHeight;
}
if ( 0 == nFormat )
{
rc.left = rcDest.left;
rc.right= rc.left + nSrcWidth;
}
else if ( 0 != nFormat&0x00000001 )
{
rc.left = rcDest.left + (rcDest.Width()-nSrcWidth)/2;
rc.right= rc.left + nSrcWidth;
}
else if ( 0 != nFormat&0x00000002 )
{
rc.right = rcDest.right;
rc.left = rc.right - nSrcWidth;
}
return rc;
}
2、使用示例
例如将一张300*200的位图缩放到CRect(100, 50, 500, 300)区域中,并且位图在目标区域中垂直与水平方向都居中对齐
CRect rc = Zoom(CRect(100, 50, 500, 300), 300,200, DT_VCENTER | DT_CENTER);
等比缩放公式_等比缩放算法相关推荐
- 等比缩放公式_图片等比例缩小算法
图片等比例缩放算法 在许多语言中,都希望图片可以等比例缩小或者放大,但是仅仅依靠语言本身的方法, 大多差强人意, 所以在此提供一个所有语言通用的图片等比例缩小方法的算法. 这里以 java 语言为例子 ...
- 方根法公式_方根的简易算法
1.1已知平方根整数部分,求平方根小数部分的算法: 任何一个数都可以写成某个整数的平方加上一个余数,如15可以写成32+6.8.9可以写成22+4.9.任何一个正数写成某个整数的平方加一个余数项的通式 ...
- 用Java编写约分最简公式_一个有趣的算法问题:如何定义一个分数类
一个来自于C++程序设计的经典问题.如何定义一个分数类,实现分数的约分化简,分数之间的加法.减法.乘法.除法四则运算? 1.初见 刚看到这道题的时候,第一感觉是挺简单的啊,就是基本的面向对象,定义对应 ...
- vwap 公式_时间加权平均价格算法(TWAP)和成交量平均算法(VWAP)在量化回测的应用...
为什么要引入TWAP和 VWAP? 为了评估策略的资金容量,我们对M.trade模块里买入点和卖出点这两个参数进行了更丰富的扩展,支持了策略能够按更丰富的算法交易价格(WAP)进行撮合. 如果资金是1 ...
- cad放大_原来CAD缩放视图这么简单!当初入门走了好多弯路
不少刚接触CAD的小伙伴们都会问CAD里的视图能不能缩放?怎么缩放?当我们的在绘制比较复杂的图纸的时候,视图的缩放确实有利于我们更高效.便捷地绘图,今天小编就来给小伙伴们分享两个缩放视图的方法,很简单 ...
- vscode缩放代码_Visual Studio Code 缩放设置
Windows下的软件的操作都很类似,所以刚开始使用vs code的时候习惯性地使用Ctrl+鼠标滚轮进行缩放,然而在vs code上不管用. 在vs code中有两类缩放: 一.整体缩放:包括菜单栏 ...
- java计算抛物线的标准方程_抛物线方程公式大全_抛物线的四种标准方程_抛物线公式_抛物线方程及图像_高中数学知识点总结网...
宜城教育资源网www.ychedu.com抛物线方程公式大全_抛物线的四种标准方程_抛物线公式_抛物线方程及图像_高中数学知识点总结网抛物线方程定义编辑抛物线定义:平面内与一个定点F和一条直线l的距离 ...
- echarts 与 百度地图bmap结合系列: 如何设置地图缩放级别和监听缩放事件
简单的demo: // ehcarts 的实例对象 this.myChart = echarts.init(el)// ehcarts加载完成事件 this.myChart.on('finished' ...
- 【vue + echarts】图表自适应缩放(跟随浏览器的窗口缩放,项目侧边栏折叠后的窗口缩放),图表重绘
效果图: 先清楚两个东西,浏览器窗口的缩放和项目侧边栏折叠后窗口的缩放,这两个是不一样的 第一种,浏览器窗口缩放后,当前窗口会放大了或者缩小了,这时会走浏览器缩放的代码部分,前几期有出过文章说明,参考 ...
最新文章
- PHP5 mysqli 教程
- python如何使用apriori_python-如何加快基于Apriori框架的速度,以仅生...
- 沟通无国界,云信助力译牛构建远程会议同传新模式
- python浓缩(14)执行环境
- [PAT乙级]1047 编程团体赛
- C++学习——string
- Photoshop CC 2019多边形形的抠图
- lambda,reserve list, list comprehension, string of slice
- 照度计与亮度计的区别及如何挑选?
- js 实现PHP中的in_array()
- Circular Sequence
- 计算机应用基础考试excel操作题,自学考试_《计算机应用基础》_上机操作_模拟练习题...
- 学习笔记 Tianmao 篇 SwipeRefreshLayoyt 下拉刷新 控件 使用
- linux c 读取.bin文件
- linux ARM64 中断底层处理代码分析
- 国家电网车辆智能车载终端4G全网通T-BOX 、车联网OBD终端、4G TBOX终端
- Swift SwiftUI 必备础库之 01 Introspect
- j2cache两级缓存框架
- 伺服电机三环(电流环、速度环、位置环)控制原理及参数调节
- 劳伦-杰克逊日记里对姚明的真情告白
热门文章
- 黑电行业越来越难,海信、TCL、创维、康佳、长虹急需破局
- svn怎么执行清理命令_win7系统如何清理注册表 win7系统清理注册表方法【介绍】...
- 【多元统计分析】09.独立性检验与正态性检验
- 姜小白的python日记Day3 初识模块与数据运算
- linux修复win10启动失败,win10自动修复失败开不了机解决方法
- 计算机词汇怎么背,如何背诵英语词汇更有效?
- RTL设计(6)- 伪随机数生成器
- jpress转换html5,JPress技术精讲:JPress如何做到安装后重新加载的?
- Git 版本回退方法
- 图解弗洛伊德算法(每一对顶点之间的最短路径问题)