17370845950

C++怎么画圆 C++ EasyX图形库circle函数使用演示【绘图】
用 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()

完整可运行示例(带颜色、居中、防闪屏)

下面这段代码能立刻跑起来,画一个红色实心圆,居中显示:

#include 
int 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(),或者忘了阻塞等待,就会陷入“代码没错却看不到图”的状态。