【转载】关于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

 
时间: 2024-10-16 04:11:52

【转载】关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解的相关文章

[转载] Android签名机制之—签名过程详解

本文转载自: http://www.wjdiankong.cn/android%E7%AD%BE%E5%90%8D%E6%9C%BA%E5%88%B6%E4%B9%8B-%E7%AD%BE%E5%90%8D%E8%BF%87%E7%A8%8B%E8%AF%A6%E8%A7%A3/ 一.前言 又是过了好长时间,没写文章的双手都有点难受了.今天是圣诞节,还是得上班.因为前几天有一个之前的同事,在申请微信SDK的时候,遇到签名的问题,问了我一下,结果把我难倒了..我说Android中的签名大家都会熟悉

[转载] Android签名机制之—签名验证过程详解

本文转载自: http://www.wjdiankong.cn/android%E7%AD%BE%E5%90%8D%E6%9C%BA%E5%88%B6%E4%B9%8B-%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E8%BF%87%E7%A8%8B%E8%AF%A6%E8%A7%A3/ 一.前言 今天是元旦,也是Single Dog的嚎叫之日,只能写博客来祛除寂寞了,今天我们继续来看一下Android中的签名机制的姊妹篇:Android中是如何验证一个Apk的签名.

转载 logback的使用和logback.xml详解 http://www.cnblogs.com/warking/p/5710303.html

logback的使用和logback.xml详解 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging logback-access:访问模块与Servlet容器集

【转载ToString()转换格式;DateTime.ToString()用法详解】

ToString()转换格式;DateTime.ToString()用法详解 格式模式 说明和关联属性 c.C 货币格式.关联的属性包括: CurrencyDecimalDigits, CurrencyDecimalSeparator, CurrencyGroupSeparator, CurrencyGroupSizes, CurrencyNegativePattern, CurrencyPositivePattern, CurrencySymbol. d.D 十进制格式. e.E 科学计数(指

[转载]JavaEE学习篇之--JQuery技术详解

原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/32102187 1.简介2.工具3.jQuery对象 1.DOM对象转化成jQuery对象 2.jQuery对象转化成DOM对象4.jQuery选择器 1.基本选择器 2.层次选择器 3.过滤选择器 4.基础过滤选择器 5.内容过滤选择器5.可见度过滤选择器 1.属性过滤选择器 2.子元素过滤选择器 3.表单对象属性过滤选择器 4.表单选择器6.jQuery中的DOM操作

[转载] java多线程学习-java.util.concurrent详解(四) BlockingQueue

转载自http://janeky.iteye.com/blog/770671 --------------------------------------------------------------------------------- 7.BlockingQueue     “支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用.“ 这里我们主要讨论BlockingQueue的最典型实现:LinkedBlockingQueue 和Arra

[转载] java多线程学习-java.util.concurrent详解(一) Latch/Barrier

转载自http://janeky.iteye.com/blog/769965 Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent, 提供了大量高级工具,可以帮助开发者编写高效.易维护.结构清晰的Java多线程程序.从这篇blog起,我将跟大家一起共同学习这些新的Java多线程构件 1. CountDownLatch     我们先来学习一下JDK1.5 API中关于这个类的详细介绍: “一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个

[转载] java多线程学习-java.util.concurrent详解(二)Semaphore/FutureTask/Exchanger

转载自http://janeky.iteye.com/blog/770393 ----------------------------------------------------------------------------- 3. Semaphore     我们先来学习一下JDK1.5 API中关于这个类的详细介绍: “一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每个 release() 添加一个许可,从

[转载] java多线程学习-java.util.concurrent详解(三)ScheduledThreadPoolExecutor

转载自http://janeky.iteye.com/blog/770441 ---------------------------------------------------------------------------------- 6. ScheduledThreadPoolExecutor     我们先来学习一下JDK1.5 API中关于这个类的详细介绍: "可另行安排在给定的延迟后运行命令,或者定期执行命令.需要多个辅助线程时,或者要求 ThreadPoolExecutor 具