在 Ubuntu 上用 C++ 画图,常见有几种方式,取决于你想画什么(简单图形、窗口界面、还是图像文件)。下面按从简单到专业给你介绍。
sudo apt update
sudo apt install libsfml-dev
#include <SFML/Graphics.hpp>
int main() {
sf::RenderWindow window(sf::VideoMode(400, 400), "C++ Draw");
sf::CircleShape circle(100);
circle.setFillColor(sf::Color::Green);
circle.setPosition(100, 100);
while (window.isOpen()) {
sf::Event e;
while (window.pollEvent(e))
if (e.type == sf::Event::Closed)
window.close();
window.clear();
window.draw(circle);
window.display();
}
return 0;
}
g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system
./a.out
✅ 优点:
适合:保存为 PNG/JPG
sudo apt install libopencv-dev
#include <opencv2/opencv.hpp>
int main() {
cv::Mat img(400, 400, CV_8UC3, cv::Scalar(255,255,255));
cv::circle(img, cv::Point(200,200), 100, cv::Scalar(0,255,0), -1);
cv::imwrite("out.png", img);
}
编译:
g++ main.cpp `pkg-config --cflags --libs opencv4`
适合:理解图形原理
sudo apt install libx11-dev
⚠️ 代码较复杂,不建议新手。
示例(gnuplot):
#include <cstdio>
int main() {
FILE* g = popen("gnuplot -persist", "w");
fprintf(g, "plot sin(x)\n");
pclose(g);
}
sudo apt install qtbase5-dev
适合做完整桌面软件。
| 需求 | 推荐 |
|---|---|
| 学习 C++ 画图 | ✅ SFML |
| 保存图片 | OpenCV |
| 数据可视化 | gnuplot |
| 桌面软件 | Qt |
| 底层学习 | X11 |
如果你愿意,可以告诉我:
我可以直接给你完整可运行示例。