关于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 详解的更多相关文章

  1. 【转载】C/C++中extern关键字详解

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

  2. (转载)完成端口(Completion Port, I/OCP)详解

    http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html 手把手叫你玩转网络编程系列之三    完成端口(Completion P ...

  3. 【转载】C# 中的委托和事件(详解:简单易懂的讲解)

    本文转载自http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html C# 中的委托和事件(详解) C# 中的委托和事件 委托和事件在 ...

  4. 转载 JS组件Bootstrap Select2使用方法详解

    JS组件Bootstrap Select2使用方法详解 作者:懒得安分 字体:[增加 减小] 类型:转载 时间:2016-01-26我要评论 这篇文章主要为大家介绍了JS组件Bootstrap Sel ...

  5. 【转载】BootStrap表格组件bootstrap table详解

    (转载,来源“脚本之家”,作者不详) 一.Bootstrap Table的引入 关于Bootstrap Table的引入,一般来说还是两种方法: 1.直接下载源码,添加到项目里面来.由于Bootstr ...

  6. [转载]OpenSSL中文手册之命令行详解(未完待续)

     声明:OpenSSL之命令行详解是根据卢队长发布在https://blog.csdn.net/as3luyuan123/article/details/16105475的系列文章整理修改而成,我自己 ...

  7. 【转载】Android应用AsyncTask处理机制详解及源码分析

    [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 Android异步处理机制一直都是Android的一个核心,也是应用工程师面试的一个 ...

  8. [转载]JavaEE学习篇之——JQuery技术详解

    原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/32102187 1.简介2.工具3.jQuery对象 1.DOM对象转化成j ...

  9. 转载 《AngularJS》5个实例详解Directive(指令)机制

    <AngularJS>5个实例详解Directive(指令)机制 大漠穷秋 本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请 ...

随机推荐

  1. Java ZIP打包

    File zipFile = IOUtil.createTempFile("zip"); ZipOutputStream zipout = new ZipOutputStream( ...

  2. JQ N级导航

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. digitalocean vpn安装配置教程

    digitalocean是美国一家专业的vps提供商,优势是性价比高,最低配置512MB内存vps每月只要5美元,导致大陆用户疯狂涌入.关于digitalocean申请方法.digitalocean速 ...

  4. HashMap和HashSet的源代码分析

    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 static final float DEFAULT_LOAD_ ...

  5. 关于css的hack问题

    <!--[if <keywords>? IE <version>?]> HTML代码块 <![endif]--> 取值: <keywords> ...

  6. sql语句的使用;

    1.导出数据库的语句: mysqldump -u root -p shop > d:\shop.sql

  7. javaweb学习总结——Filter高级开发

    在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可以使用Decorator(装饰器)模式对request.response对象进行包装,再把包装对象传给目 ...

  8. nodejs全局安装与本地安装区别

    本地安装 1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modul ...

  9. 利用文本编辑器输入课堂上练习的Hello.java,并在JDK环境下编译和运行。

  10. 其它网页可以上网,IE浏览器打不开网页的解决办法

    下面是自己引用别人的,作为自己的备注 昨天由于安装了多款软件,今天开机发现IE浏览器打不开了,废了些周折终于,修复了IE浏览器,现将ie浏览器打不开网页的经验分享给大家,希望此经验对于出现过此类情况的 ...