如何在我的 C++ 程序中获取和使用头文件 <graphics.h>?

Posted

技术标签:

【中文标题】如何在我的 C++ 程序中获取和使用头文件 <graphics.h>?【英文标题】:How can I get and use the header file <graphics.h> in my C++ program? 【发布时间】:2011-10-22 15:27:51 【问题描述】:

我一直在寻找头文件&lt;graphics.h&gt;的源代码及其相关库,以便将其与我的C++程序集成。

同时,我对那些在多个编译器上工作的跨平台库很感兴趣。更明确地说,我说的是那些用于在 C++ 中绘制形状、线条和曲线的库。

【问题讨论】:

可能重复:***.com/questions/671395/…***.com/questions/1924171/simple-c-graphics-library***.com/questions/4496541/… 如果您有引用 graphics.h 的旧代码或出于某种原因仍想使用它,请使用 WinBGIm,这是原始代码的现代端口。 WinBGIm 是现代的,就像 GCC 3.3 是现代的一样。您可以做所有正确的事情,但使用它的程序是否能在“过去 5 年制造”意义上的现代 PC 上运行仍然是一次抛硬币。 【参考方案1】:

&lt;graphics.h&gt; 是非常古老的图书馆。最好使用新的东西

这里有一些用于 C/C++ 的 2D 库(独立于平台)

SDL

GTK+

Qt

还有一个免费的非常强大的 C++ 3D 开源图形库

OGRE

【讨论】:

感谢您的准确回答! 有一点 - graphics.h 很简单:如果你只是想在屏幕上绘制一些矩形和圆形,它就可以了。【参考方案2】:

&lt;graphics.h&gt; 不是标准标头。最常见的是它指的是 Borland 的 BGI API for DOS 的标头,并且充其量是过时的。

但是它非常简单; BGI 接口有一个 Win32 实现,称为WinBGIm。它是使用 Win32 GDI 调用(最低级别的 Windows 图形接口)实现的。由于它是作为源代码提供的,因此它可能是理解 GDI 工作原理的一种简单方法。

然而,WinBGIm 绝不是跨平台的。如果您想要的只是简单的图形基元,那么大多数高级 GUI 库(例如 wxWidgets 和 Qt)也支持它。 cmets 中提到的可能重复的答案中建议了更简单的库。

【讨论】:

WinBGIm 本身已经很老了——最后一次更新是在 2004 年? -- 并且根本不是标准 API。 @duskwuff :我不确定您要表达什么观点。似乎它适用于问题而不是我的答案。当它实现的 API 没有改变时,老化几乎不是问题。我明确表示它不是标准库。没有用于图形的标准库。您的所有观点都已在现有答案中提出,并且问题本身已有 6 年历史(因此在撰写本文时,WinBGIm 还没有那么老)。 @user4581301 我和 4 年前对 user149341 提出的观点相同——评论与这个答案不符。事实上,它本身可能需要一个答案,因为它解决了跨平台问题。如果问题不是 10 岁,那就是。【参考方案3】:

这个 Turbo C 图形接口有一个现代端口,称为WinBGIM,它在 MinGW/GCC 下模拟 BGI 图形。

我还没有尝试过,但它看起来很有希望。例如initgraph 创建一个窗口,然后 从这一点开始,您可以使用良好的旧功能在该窗口中绘制,最后closegraph 删除该窗口。它还有一些更高级的扩展(例如鼠标处理和双缓冲)。

当我第一次从 DOS 编程转到 Windows 时,我没有互联网,我乞求像这样简单的东西。但最后我不得不从 Windows SDK 的离线帮助中学习如何创建窗口以及如何处理事件和使用设备上下文。

【讨论】:

【参考方案4】:

graphics.h 似乎在 90 年代曾经与 Borland 和/或 Turbo C++ 捆绑在一起。

http://www.daniweb.com/software-development/cpp/threads/17709/88149#post88149

现代编译器不太可能支持该文件。对于其他图形库,请检查“相关”问题列表(与此相关的问题)。例如,"A Simple, 2d cross-platform graphics library for c or c++?"。

【讨论】:

【参考方案5】:

以 graphics.h 头文件开头的库 Borland 图形接口已在 SDL 之上重新实现。这带来了对现代硬件和操作系统的支持(实际上是多个操作系统,因为 SDL 相当便携)。

It can be downloaded here 为各种常见桌面目标预构建。

或者,如果您希望(或必须)从源代码构建它,here is a github mirror。

请注意,它是一个非常古老的软件库的移植版,将在现代工具上运行,因此如果您打算将其用于课堂作业,则应咨询教师。作业失败会很烦人,因为您使用的习语需要现代编译器的支持,并且发现它们不能在 1980 年代的标记系统上编译。

您可能会发现最好使用标记系统的虚拟机克隆来获取和开发,以防止令人讨厌的意外。

【讨论】:

以上是关于如何在我的 C++ 程序中获取和使用头文件 <graphics.h>?的主要内容,如果未能解决你的问题,请参考以下文章

预编译标准库头文件 - C++

如何在 C++ 的头文件中定义字符串数组并设置其值?

如何在 C++ 中构建私有和公共 API(头文件)

如何使用 Qt Creator 将 C++ 头文件添加到 Qt 项目

在哪里告诉 Qt Creator 搜索用于自动完成的头文件

在 Objective-C 中使用外部 C++ 头文件