C语言提供了很多函数,用于对绘图屏幕和视图区等进行控制管理

C语言提供了很多函数,用于对绘图屏幕和视图区等进行控制管理。

C语言提供了很多函数,用于对绘图屏幕和视图区等进行控制管理

与绘图环境相关的函数图表9-1所示:

表9-1 绘图环境函数表                                    

 函数或数据
 描述
cleardevice
 清除屏幕内容
initgraph
 初始化绘图窗口。
closegraph
 关闭图形窗口。
getaspectratio

 获取当前缩放因子。 

setaspectratio

 设置当前缩放因子。

graphdefaults

 恢复绘图环境为默认值。
setorigin
 设置坐标原点。
setcliprgn
 设置当前绘图设备的裁剪区。
clearcliprgn

 清除裁剪区的屏幕内容

l  cleardevice()函数:用于清除屏幕内容,是用当前背景色清空屏幕,并将当前点移至(0, 0)。

void cleardevice();

l  getaspectratio()函数:用于获取当前缩放因子。

void getaspectratio(float *pxasp,float *pyasp);

参数:pxasp返回x方向上的缩放因子,pyasp返回y方向上的缩放因子。

返回值:(无)

l  setaspectratio()函数:用于设置当前缩放因子。

void setaspectratio(float xasp,float yasp);

参数:xasp为x方向上的缩放因子,例如绘制宽度为100的矩形,实际的绘制宽度为100*xasp。Yasp为y方向上的缩放因子,例如绘制高度为100的矩形,实际的绘制高度为100*yasp。

返回值:(无)

说明:

如果缩放因子为负,可以实现坐标轴的翻转。例如,执行setaspectratio(1,-1)后,可使y轴向上为正。

l  graphdefaults()函数:用于重置视图、当前点、绘图色、背景色、线形、填充类型、字体为默认值。

void graphdefaults();

返回值:(无)

l  setorigin()函数:用于设置坐标原点。

void setorigin(int x, int y);

x:原点的 x 坐标(使用物理坐标),y:原点的 y 坐标(使用物理坐标)。

返回值:(无)

l  setcliprgn()函数:用于设置当前绘图设备的裁剪区。

void setcliprgn(HRGN hrgn);

参数:hrgn为区域的句柄,创建区域所使用的坐标为物理坐标,如果该值为 NULL,表示取消之前设置的裁剪区。

返回值:(无)

说明:

HRGN  Windows 定义的表示区域的句柄。将该区域设置为裁剪区后,任何区域外的绘图都将无效(但仍然可以通过操作存在裁剪区外绘图)。

可以使用 Windows GDI 函数创建一个区域。例如,创建矩形区域可以使用函数:

HRGN CreateRectRgn(int left, int top, int right, int bottom);

此外,还可以使用函数 CreateEllipticRgn 创建椭圆形的区域,使用 CreatePolygonRgn 创建多边形的区域等等。还可以使用 CombineRgn 组合区域。更多关于区域的 GDI 函数,请参考 MSDN 中的 Region Functions

注意:创建区域后,如果不再使用,请执行DeleteObject(HRGN hrgn) 以释放该区域对应的系统资源。

9-2创建一个矩形裁剪区,并在该裁剪区内画圆,请观察裁剪效果:

#include <graphics.h>

#include <conio.h>

int main()

{

initgraph(640, 480); /* 初始化绘图窗口*/

HRGN rgn = CreateRectRgn(100, 100, 200, 200); /*创建一个矩形区域*/

setcliprgn(rgn); /*将该矩形区域设置为裁剪区*/

DeleteObject(rgn); /* 不再使用rgn,清理 rgn 占用的系统资源*/

circle(150, 150, 55); /* 画圆,受裁剪区影响,只显示出四段圆弧*/

setcliprgn(NULL); /*取消之前设置的裁剪区*/

circle(150, 150, 60); /*画圆,不再受裁剪区影响,显示出一个完整的圆*/

getch();/*按任意键退出*/

closegraph();

return 0;

}

程序运行结果:

  C语言提供了很多函数,用于对绘图屏幕和视图区等进行控制管理

9-4 运行结果

l  clearcliprgn()函数:用于清空裁剪区的屏幕内容。

void clearcliprgn();

返回值:(无)


Powered By 主机

 Theme By 服务器

Copyright 六六互联.Some Rights Reserved.www.ic.vip