SetWindowOrg SetViewportOrg DC 的坐标
2011-01-06 23:59
295 查看
转自:http://blog.csdn.net/zsyddl2/archive/2011/01/06/6120886.aspx
SetWindowOrg SetViewportOrg DC 的坐标
SetWindowOrg SetViewportOrg , 在 显示器中的形象解释、验证,(打印机上未验证,也许不同,没有打印机所以暂时没有验证)
这里只是说一下原点坐标。在一个程序中遇到 DC 的坐标问题,也是一直没有搞明白。
这次在网上搜索,确实有几个帖子说的比较详细,但是还是不容易理解,不形象。所以细细的想了一下,并通过程序验证正确。形象具体的总结了一下:
有三个坐标系
1 、 世界坐标系,这个我们可以认为是固定不变的一个坐标系,一个网状的坐标格子,在最底层。 (该坐标在函数使用中没有涉及,但是一定有,帮助理解)。
2 、 设备坐标,也就是 viewport 坐标。这个就是图形设备,打印机什么的,可以想象为一张纸,用于绘图的纸张。 dc 的绘图动作, 使用的坐标就是相对该坐标的 ,这个很重要。
比如 dc.Rectangle(0, 0, 200, 200); 无论 viewport 原点在哪里, 该矩形都是 以 viewport 的原点 的 一个 200*200 的 dc.Rectangle;
比如 pDC->SetViewportOrg(100, 100);
pDC->Rectangle(0, 0, 200, 200);
该矩形还是在 viewport 中的 0, 0, 200, 200 。 但是 在世界坐标中,该矩形为 100 , 100 , 300 , 300 , 因为该矩形是相对 ViewportOrg 定位的坐标
无论 viewport 在哪里, window org 在哪里,最后绘制的图形可以在世界坐标中找到,而且位置都是确定的:通过 viewportorg 偏移找到。
3 、 窗口坐标, windoworg ,也是我们创建的窗口, 这个就是透过该坐标 我们看见的世界中的图形,你的照相机。也就是所有图形已经通过 2 中的坐标关系被绘制在世界坐标中,通过本规则移动一个窗口,移动到你想看的地方,然后世界坐标的景物就在你的窗口中了。就像一个照相机一样,随便怎么移动,只是景物在照相机中的位置变化,但是景物的在自然世界的位置是没有变化的。而移动相机和景物的位置就是相反的。比如你把相机左移动,景物就在你的相机中向右移动,反之亦然。
在 2 中 只是移动了 view port ,此时,窗口仍然在 0,0 所以看见的图形如下:矩形被绘制在了世界坐标的 100 , 100 处, 窗口(照相机)在世界坐标的 0 , 0 点。
现在移动窗口(你的照相机),到与 viewportorg 重合,则效果如下,透过窗口看,世界的景物到了窗口的左上角了。而移动窗口时,绘制在世界坐标中的景物位置没有变的。可以任意移动“照相机”,景物会在“照相机”中的位置发生相应变化
总结一下:图形绘制,坐标是相对 viewport 的坐标,但是图形绘制完毕,是固定在世界坐标不会改变的; window 窗口是你的照相机,移动窗口,景物会在照相机中发生变化。
这个是形象的解释了,没有量化的坐标换算,这个换算公式有很多介绍的,所以能形象了,公式就很好办了:)
SetWindowOrg SetViewportOrg DC 的坐标
SetWindowOrg SetViewportOrg , 在 显示器中的形象解释、验证,(打印机上未验证,也许不同,没有打印机所以暂时没有验证)
这里只是说一下原点坐标。在一个程序中遇到 DC 的坐标问题,也是一直没有搞明白。
这次在网上搜索,确实有几个帖子说的比较详细,但是还是不容易理解,不形象。所以细细的想了一下,并通过程序验证正确。形象具体的总结了一下:
有三个坐标系
1 、 世界坐标系,这个我们可以认为是固定不变的一个坐标系,一个网状的坐标格子,在最底层。 (该坐标在函数使用中没有涉及,但是一定有,帮助理解)。
2 、 设备坐标,也就是 viewport 坐标。这个就是图形设备,打印机什么的,可以想象为一张纸,用于绘图的纸张。 dc 的绘图动作, 使用的坐标就是相对该坐标的 ,这个很重要。
比如 dc.Rectangle(0, 0, 200, 200); 无论 viewport 原点在哪里, 该矩形都是 以 viewport 的原点 的 一个 200*200 的 dc.Rectangle;
比如 pDC->SetViewportOrg(100, 100);
pDC->Rectangle(0, 0, 200, 200);
该矩形还是在 viewport 中的 0, 0, 200, 200 。 但是 在世界坐标中,该矩形为 100 , 100 , 300 , 300 , 因为该矩形是相对 ViewportOrg 定位的坐标
无论 viewport 在哪里, window org 在哪里,最后绘制的图形可以在世界坐标中找到,而且位置都是确定的:通过 viewportorg 偏移找到。
3 、 窗口坐标, windoworg ,也是我们创建的窗口, 这个就是透过该坐标 我们看见的世界中的图形,你的照相机。也就是所有图形已经通过 2 中的坐标关系被绘制在世界坐标中,通过本规则移动一个窗口,移动到你想看的地方,然后世界坐标的景物就在你的窗口中了。就像一个照相机一样,随便怎么移动,只是景物在照相机中的位置变化,但是景物的在自然世界的位置是没有变化的。而移动相机和景物的位置就是相反的。比如你把相机左移动,景物就在你的相机中向右移动,反之亦然。
在 2 中 只是移动了 view port ,此时,窗口仍然在 0,0 所以看见的图形如下:矩形被绘制在了世界坐标的 100 , 100 处, 窗口(照相机)在世界坐标的 0 , 0 点。
现在移动窗口(你的照相机),到与 viewportorg 重合,则效果如下,透过窗口看,世界的景物到了窗口的左上角了。而移动窗口时,绘制在世界坐标中的景物位置没有变的。可以任意移动“照相机”,景物会在“照相机”中的位置发生相应变化
总结一下:图形绘制,坐标是相对 viewport 的坐标,但是图形绘制完毕,是固定在世界坐标不会改变的; window 窗口是你的照相机,移动窗口,景物会在照相机中发生变化。
这个是形象的解释了,没有量化的坐标换算,这个换算公式有很多介绍的,所以能形象了,公式就很好办了:)
相关文章推荐
- SetWindowOrg SetViewportOrg DC 的坐标形象解释
- 理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
- windows编程中关于设置映象模式的四个函数SetWindowOrg SetViewPortOrg SetMapMode SetWindowExtEx SetViewPortExtEx
- SetMapMode,SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportE
- SetWindowExt,SetViewportExt,SetWindowOrg和SetViewportOrg的理解
- 理解SetMapMode,SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
- SetWindowOrg与SetViewportOrg移动原点
- MFC编程中SetViewportOrg与SetWindowOrg的理解
- SetWindowOrg和SetViewportOrg
- SetWindowOrg,SetViewportOrg,SetMapMode
- SetWindowOrg & SetViewportOrg
- 对SetViewportOrg和SetWindowOrg的理解
- 【转】理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
- SetWindowOrg和SetViewportOrg
- [转]mfc编程中SetViewportOrg与SetWindowOrg的理解
- 理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt (转)
- 理解SetWindowOrg/SetViewportOrg/SetWindowExt/SetViewportExt
- Windows编程中SetViewportOrg与SetWindowOrg的理解
- 理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
- SetViewportOrg与SetWindowOrg的区别