【转载】关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解
关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解
1、 SetWindowOrgEx是设置窗口的原点坐标。
例如:
Ellipse(hdc,-100,-100,100,100);
MoveToEx(hdc,-200,0,NULL);
LineTo(hdc,200,0);
MoveToEx(hdc,0,-200,NULL);
LineTo(hdc,0,200);
MoveToEx(hdc,0,0,NULL);
LineTo(hdc,100,100);
运行程序的效果为:
修一下程序为:
SetWindowOrgEx(hdc,-100,-100,NULL);
Ellipse(hdc,-100,-100,100,100);
MoveToEx(hdc,-200,0,NULL);
LineTo(hdc,200,0);
MoveToEx(hdc,0,-200,NULL);
LineTo(hdc,0,200);
MoveToEx(hdc,0,0,NULL);
LineTo(hdc,100,100);
运行效果为:
得出结论:SetWindowOrgEx是设置窗口原点坐标的大小
2、 SetViewportOrgEx设置视口原点坐标。
我们将上面程序再次修改一下:
SetViewportOrgEx (hdc,100,100,NULL);
Ellipse(hdc,-100,-100,100,100);
MoveToEx(hdc,-200,0,NULL);
LineTo(hdc,200,0);
MoveToEx(hdc,0,-200,NULL);
LineTo(hdc,0,200);
MoveToEx(hdc,0,0,NULL);
LineTo(hdc,100,100);
效果很上面的一样:
得出结论:SetViewPortOrgEx是设视口原点坐标的大小,也就是客户区的原点大小。在默认的情况下,客户区的原点为左上角坐标为(0,0)。调用SetViewportOrgEx (hdc,100,100,NULL)就把客户的原点坐标设置为(100,100),那么原来客户区的左上角的坐标就变为了(-100,-100)(在映射模式为MM_TEXT时)。
3、 SetWindowExtEx, 用于设置逻辑坐标范围。
SetViewPortExtEx, 用于设置设备坐标范围。
注意:1、上面的两个函数的调用,只有在映射模式为MM_ANISOTROPIC 和MM_ISOROPIC下才有作用,在其他的模式下将被忽略。
2、 必须在调用SetViewPortExtEx之前调用SetWindowExtEx,以便最有效地使用显示区域中的空间。
修改上面的代码:
SetMapMode(hdc,MM_ANISOTROPIC);
SetWindowExtEx(hdc,200,200,NULL);//将窗口的逻辑坐标X轴0 到200,Y轴设置为0 到200
//将视口原点设置为客户区的中心点上
SetViewportOrgEx(hdc,rectClient.right / 2,rectClient.bottom / 2,NULL);
//将窗口的设备坐标X轴 0 到 rectClient.right,Y轴0 到 rectClient.bottom
SetViewportExtEx(hdc,rectClient.right,rectClient.bottom,NULL);
Ellipse(hdc,-100,-100,100,100);
MoveToEx(hdc,-200,0,NULL);
LineTo(hdc,200,0);
MoveToEx(hdc,0,-200,NULL);
LineTo(hdc,0,200);
MoveToEx(hdc,0,0,NULL);
LineTo(hdc,100,100);
效果图为:
原文地址:http://blog.csdn.net/lanyzh0909/article/details/6107814
【转载】关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解的更多相关文章
- 【转载】C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...
- (转载)完成端口(Completion Port, I/OCP)详解
http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html 手把手叫你玩转网络编程系列之三 完成端口(Completion P ...
- 【转载】C# 中的委托和事件(详解:简单易懂的讲解)
本文转载自http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html C# 中的委托和事件(详解) C# 中的委托和事件 委托和事件在 ...
- 转载 JS组件Bootstrap Select2使用方法详解
JS组件Bootstrap Select2使用方法详解 作者:懒得安分 字体:[增加 减小] 类型:转载 时间:2016-01-26我要评论 这篇文章主要为大家介绍了JS组件Bootstrap Sel ...
- 【转载】BootStrap表格组件bootstrap table详解
(转载,来源“脚本之家”,作者不详) 一.Bootstrap Table的引入 关于Bootstrap Table的引入,一般来说还是两种方法: 1.直接下载源码,添加到项目里面来.由于Bootstr ...
- [转载]OpenSSL中文手册之命令行详解(未完待续)
声明:OpenSSL之命令行详解是根据卢队长发布在https://blog.csdn.net/as3luyuan123/article/details/16105475的系列文章整理修改而成,我自己 ...
- 【转载】Android应用AsyncTask处理机制详解及源码分析
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 Android异步处理机制一直都是Android的一个核心,也是应用工程师面试的一个 ...
- [转载]JavaEE学习篇之——JQuery技术详解
原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/32102187 1.简介2.工具3.jQuery对象 1.DOM对象转化成j ...
- 转载 《AngularJS》5个实例详解Directive(指令)机制
<AngularJS>5个实例详解Directive(指令)机制 大漠穷秋 本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请 ...
随机推荐
- LeetCode OJ 53. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- Visual Studio 2010/2013 UTF8编码调试时显示中文
VisualStudio 2010 SP1环境 1.设置string默认编码为utf8,只需要在文件头部加入以下代码 #pragma execution_character_set("utf ...
- Openjudge-计算概论(A)-统计字符数
描述: 判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多输入第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串每组测试数据之间有一个空行,每行数据不超 ...
- layoutSubview触发时机
layoutSubviews在以下情况下会被调用: 1.init初始化不会触发layoutSubviews 2.addSubview会触发layoutSubviews 3.设置view的Frame会触 ...
- 对AppStore中的项目进行评分(转载)
在ios6.0前跳转到appstore评分一般是直接跳转到appstore评分NSString *evaluateString = [NSString stringWithFormat:@" ...
- JPA 系列教程14-自定义类型-@Embedded+@Embeddable
自定义类型 在hibernate中实现自定义类型,需要去实现UserType接口即可或者以Component的形式提供. JPA的@Embedded注解有点类似,通过此注解可以在Entity模型中使用 ...
- 超赞的OOM检测(除了mat以外)
今天看了下微博,扔物线分享了个内存检测的工具: 内存泄露是 OOM 最常见的原因,但它的侦测需人工排查,往往眼看瞎也未必能找到泄露的内存.Square 新库 LeakCanary 用一种巧妙的思路实现 ...
- ios UIApplocation 中APP启动方式
iOS app启动的方式有哪些: 自己启动(用户手动点击启动) urlscheme启动(关于urlScheme的详解)http://www.cnblogs.com/sunfuyou/p/6183064 ...
- php给数组key:value中的key加引号
public function Ext_json_decode($str, $mode=false){ if(preg_match('/\w:/', $str)){ $str = preg_repla ...
- Windows API 之 GetModuleHandle
Retrieves a module handle for the specified module. The module must have been loaded by the calling ...