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);

等比缩放公式_等比缩放算法相关推荐

  1. 等比缩放公式_图片等比例缩小算法

    图片等比例缩放算法 在许多语言中,都希望图片可以等比例缩小或者放大,但是仅仅依靠语言本身的方法, 大多差强人意, 所以在此提供一个所有语言通用的图片等比例缩小方法的算法. 这里以 java 语言为例子 ...

  2. 方根法公式_方根的简易算法

    1.1已知平方根整数部分,求平方根小数部分的算法: 任何一个数都可以写成某个整数的平方加上一个余数,如15可以写成32+6.8.9可以写成22+4.9.任何一个正数写成某个整数的平方加一个余数项的通式 ...

  3. 用Java编写约分最简公式_一个有趣的算法问题:如何定义一个分数类

    一个来自于C++程序设计的经典问题.如何定义一个分数类,实现分数的约分化简,分数之间的加法.减法.乘法.除法四则运算? 1.初见 刚看到这道题的时候,第一感觉是挺简单的啊,就是基本的面向对象,定义对应 ...

  4. vwap 公式_时间加权平均价格算法(TWAP)和成交量平均算法(VWAP)在量化回测的应用...

    为什么要引入TWAP和 VWAP? 为了评估策略的资金容量,我们对M.trade模块里买入点和卖出点这两个参数进行了更丰富的扩展,支持了策略能够按更丰富的算法交易价格(WAP)进行撮合. 如果资金是1 ...

  5. cad放大_原来CAD缩放视图这么简单!当初入门走了好多弯路

    不少刚接触CAD的小伙伴们都会问CAD里的视图能不能缩放?怎么缩放?当我们的在绘制比较复杂的图纸的时候,视图的缩放确实有利于我们更高效.便捷地绘图,今天小编就来给小伙伴们分享两个缩放视图的方法,很简单 ...

  6. vscode缩放代码_Visual Studio Code 缩放设置

    Windows下的软件的操作都很类似,所以刚开始使用vs code的时候习惯性地使用Ctrl+鼠标滚轮进行缩放,然而在vs code上不管用. 在vs code中有两类缩放: 一.整体缩放:包括菜单栏 ...

  7. java计算抛物线的标准方程_抛物线方程公式大全_抛物线的四种标准方程_抛物线公式_抛物线方程及图像_高中数学知识点总结网...

    宜城教育资源网www.ychedu.com抛物线方程公式大全_抛物线的四种标准方程_抛物线公式_抛物线方程及图像_高中数学知识点总结网抛物线方程定义编辑抛物线定义:平面内与一个定点F和一条直线l的距离 ...

  8. echarts 与 百度地图bmap结合系列: 如何设置地图缩放级别和监听缩放事件

    简单的demo: // ehcarts 的实例对象 this.myChart = echarts.init(el)// ehcarts加载完成事件 this.myChart.on('finished' ...

  9. 【vue + echarts】图表自适应缩放(跟随浏览器的窗口缩放,项目侧边栏折叠后的窗口缩放),图表重绘

    效果图: 先清楚两个东西,浏览器窗口的缩放和项目侧边栏折叠后窗口的缩放,这两个是不一样的 第一种,浏览器窗口缩放后,当前窗口会放大了或者缩小了,这时会走浏览器缩放的代码部分,前几期有出过文章说明,参考 ...

最新文章

  1. PHP5 mysqli 教程
  2. python如何使用apriori_python-如何加快基于Apriori框架的速度,以仅生...
  3. 沟通无国界,云信助力译牛构建远程会议同传新模式
  4. python浓缩(14)执行环境
  5. [PAT乙级]1047 编程团体赛
  6. C++学习——string
  7. Photoshop CC 2019多边形形的抠图
  8. lambda,reserve list, list comprehension, string of slice
  9. 照度计与亮度计的区别及如何挑选?
  10. js 实现PHP中的in_array()
  11. Circular Sequence
  12. 计算机应用基础考试excel操作题,自学考试_《计算机应用基础》_上机操作_模拟练习题...
  13. 学习笔记 Tianmao 篇 SwipeRefreshLayoyt 下拉刷新 控件 使用
  14. linux c 读取.bin文件
  15. linux ARM64 中断底层处理代码分析
  16. 国家电网车辆智能车载终端4G全网通T-BOX 、车联网OBD终端、4G TBOX终端
  17. Swift SwiftUI 必备础库之 01 Introspect
  18. j2cache两级缓存框架
  19. 伺服电机三环(电流环、速度环、位置环)控制原理及参数调节
  20. 劳伦-杰克逊日记里对姚明的真情告白

热门文章

  1. 黑电行业越来越难,海信、TCL、创维、康佳、长虹急需破局
  2. svn怎么执行清理命令_win7系统如何清理注册表 win7系统清理注册表方法【介绍】...
  3. 【多元统计分析】09.独立性检验与正态性检验
  4. 姜小白的python日记Day3 初识模块与数据运算
  5. linux修复win10启动失败,win10自动修复失败开不了机解决方法
  6. 计算机词汇怎么背,如何背诵英语词汇更有效?
  7. RTL设计(6)- 伪随机数生成器
  8. jpress转换html5,JPress技术精讲:JPress如何做到安装后重新加载的?
  9. Git 版本回退方法
  10. 图解弗洛伊德算法(每一对顶点之间的最短路径问题)