page contents

C语言——图形库绘图相关函数的使用

C语言图形库绘图相关函数

绘图环境相关函数如下:

一、cleardevice

这个函数用于清除屏幕内容。具体的,是用当前背景色清空屏幕,并将当前点移至 (0, 0)。

void cleardevice();

二、initgraph

这个函数用于初始化绘图环境。

HWND initgraph(
    int width,
    int height,
    int flag = NULL
);

参数:

width

绘图环境的宽度。

height

绘图环境的高度。

flag

绘图环境的样式,默认为 NULL。可为以下值:

NOCLOSE 禁用绘图环境的关闭按钮。
NOMINIMIZE 禁用绘图环境的最小化按钮。
SHOWCONSOLE 保留原控制台窗口。

返回值:

创建的绘图窗口的句柄。

示例:

以下局部代码创建一个尺寸为 640x480 的绘图环境:

initgraph(640, 480);

以下局部代码创建一个尺寸为 640x480 的绘图环境,同时显示控制台窗口:

initgraph(640, 480, SHOWCONSOLE);

以下局部代码创建一个尺寸为 640x480 的绘图环境,同时显示控制台窗口,并禁用关闭按钮:

initgraph(640, 480, SHOWCONSOLE | NOCLOSE);

三、closegraph

这个函数用于关闭图形环境。

void closegraph();

四、getaspectratio

这个函数用于获取当前缩放因子。

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

参数:

pxasp

返回 x 方向上的缩放因子。

pyasp

返回 y 方向上的缩放因子。

五、setaspectratio

这个函数用于设置当前缩放因子。

void setaspectratio(
    float xasp,
    float yasp
);

参数:

xasp

x 方向上的缩放因子。例如绘制宽度为 100 的矩形,实际的绘制宽度为 100 * xasp。

yasp

y 方向上的缩放因子。例如绘制高度为 100 的矩形,实际的绘制高度为 100 * yasp。

返回值:

(无)

说明:

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

六、graphdefaults

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

void graphdefaults();

七、setorigin

这个函数用于设置坐标原点。

void setorigin(int x, int y);

x

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

y

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

八、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) 以释放该区域对应的系统资源。

示例:

以下代码用于创建一个矩形裁剪区,并在该裁剪区内画圆,请观察裁剪效果:

#include <graphics.h>
#include <conio.h>

int main()
{
	// 初始化绘图窗口
	initgraph(640, 480);

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

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

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

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

	// 按任意键退出
	_getch();
	closegraph();
}

九、clearcliprgn

这个函数用于清空裁剪区的屏幕内容。

void clearcliprgn();
  • 发表于 2021-10-06 16:31
  • 阅读 ( 1218 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
小威
小威

64 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1312 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章