用 EasyX 画圆必须先调用 initgraph() 初始化图形窗口,再用 fillcircle(x,y,r) 绘制实心圆,注意坐标原点在左上角、需 setcolor/setfillcolor 设颜色,并以 _getch() 阻塞等待、closegraph() 释放资源。

用 EasyX 在 C++ 里画圆,核心就是调用 circle() 函数,但直接写 circle(100, 100, 50) 很可能什么也不显示——缺初始化、缺绘图窗口、缺消息循环,甚至坐标系默认原点在左上角,容易误判位置。
必须先初始化 EasyX 图形环境
EasyX 不是标准库,所有绘图前必须调用 initgraph() 创建绘图窗口,否则 circle() 会静默失败或触发断言错误。
-
initgraph(640, 480)最简启动,创建 640×480 窗口 - 推荐加参数避免控制台窗口干扰:
initgraph(640, 480, INIT_NO_CONSOLE) - 务必检查是否成功:如果返回值为
NULL,说明初始化失败(比如没装 EasyX 或路径不对) - 结束前要调用
closegraph(),否则窗口卡死或资源泄漏
circle() 的三个参数含义和常见误区
circle(x, y, r) 画的是以 (x, y) 为圆心、半径为 r 的空心圆。注意:x/y 是屏幕像素坐标,原点 (0, 0) 在左上角,不是数学常见的中心原点。
- 圆心
x超出窗口右边界(比如窗口宽 640,却设x=700),整圆不可见 - 半径
r为 0 或负数,函数不报错但不绘制;r过大会导致圆被裁剪成椭圆片段 - 颜色由当前画笔决定,默认白色,需用
setcolor()提前设置,例如setcolor(RED) - 它只画轮廓,不填充;要实心圆得用
fillcircle()
完整可运行示例(带颜色、居中、防闪屏)
下面这段代码能立刻跑起来,画一个红色实心圆,居中显示:
立即学习“C++免费学习笔记(深入)”;
#includeint main() { initgraph(640, 480, INIT_NO_CONSOLE); setcolor(RED); setfillcolor(RED); fillcircle(320, 240, 100); // 居中:x=宽/2, y=高/2 _getch(); // 等待按键,防止窗口一闪而过 closegraph(); return 0; }
- 用
fillcircle()替代circle()更符合“画圆”的直觉需求 -
_getch()是关键:没有它,程序执行完立即退出,窗口瞬间关闭 - 如果想画多个圆,不要反复调用
initgraph();一次初始化后可多次绘图
真正容易被忽略的不是函数怎么写,而是 EasyX 的生命周期管理——漏掉 initgraph() 或 closegraph(),或者忘了阻塞等待,就会陷入“代码没错却看不到图”的状态。










