慢羊羊的空间

无为,无我,无欲,居下,清虚,自然

为什么没有 setviewport() 函数?用什么替代?

由于 windows 下的 viewport 概念和过去有了很大的区别,为了避免大家混淆,EasyX 从 2011-2-24 起取消了这个函数。

下面解释一下怎样用其他函数替代 setviewport 的功能。

先说说过去的 setviewport() 的功能:

  • 设置矩形区域
  • 将矩形区域左上角设置为原点坐标
  • 可以选择是否裁剪

对于设置裁剪,可以先定义一个区域,然后将该区域设置为裁剪区。区域的概念不仅局限于矩形,在 Windows GDI 函数中有很多定义区域的语句。下面代码定义一个矩形的区域,并设置为裁剪区:

 HRGN rgn = CreateRectRgn(100, 100, 200, 200);	// 定义矩形区域
 setcliprgn(rgn);			// 设置区域 rgn 为裁剪区
 DeleteObject(rgn);			// 不再使用 rgn,清理 rgn 占用的系统资源

取消之前设置的裁剪区,可以用:

setcliprgn(NULL);

可以用 setorigin() 实现设置原点。例如设置 (100, 100) 为新的原点坐标,可以用代码:

setorigin(100, 100);

可以用 setaspectratio() 设置 x 和 y 轴的方向。例如,设置 y 坐标轴的方向向上为正:

setaspectratio(1, -1);

通过这几条语句的组合,可以实现远远比 setviewport() 强大并且实用的功能。各函数的详细用法,请参见帮助文件。

分享到